# OptiTech API Reference

Base URL: https://api.optitech.com/v1
Auth: `Authorization: Bearer $OPTITECH_API_KEY`

Interface-specific indexes:
- [API endpoint index](https://optitech.com/docs/reference/api.md): all endpoints grouped by resource, each with curl and SDK examples
- [OptiTech CLI](https://optitech.com/docs/cli.md): OptiTech CLI commands, options, and usage
- [OpenAPI spec](https://optitech.com/api_spec/release/v2.json): machine-readable schemas for request/response validation and codegen

## Programs

[All projects endpoints](https://optitech.com/docs/reference/api/projects.md)

- [List programs](https://optitech.com/docs/reference/api/projects/list-projects.md) `GET /programs`
- [Create program](https://optitech.com/docs/reference/api/projects/create-project.md) `POST /programs`
- [List shared programs](https://optitech.com/docs/reference/api/projects/list-shared-projects.md) `GET /programs/shared`
- [Retrieve program details](https://optitech.com/docs/reference/api/projects/get-project.md) `GET /programs/{program_id}`
- [Update program](https://optitech.com/docs/reference/api/projects/update-project.md) `PATCH /programs/{program_id}`
- [Delete program](https://optitech.com/docs/reference/api/projects/delete-project.md) `DELETE /programs/{program_id}`
- [Recover a deleted program](https://optitech.com/docs/reference/api/projects/recover-project.md) `POST /programs/{program_id}/recover`
- [List program access](https://optitech.com/docs/reference/api/projects/list-project-permissions.md) `GET /programs/{program_id}/permissions`
- [Grant program access](https://optitech.com/docs/reference/api/projects/grant-permission-to-project.md) `POST /programs/{program_id}/permissions`
- [Revoke program access](https://optitech.com/docs/reference/api/projects/revoke-permission-from-project.md) `DELETE /programs/{program_id}/permissions/{permission_id}`
- [List available shared preload libraries](https://optitech.com/docs/reference/api/projects/get-available-preload-libraries.md) `GET /programs/{program_id}/available_preload_libraries`
- [Create a program transfer request](https://optitech.com/docs/reference/api/projects/create-project-transfer-request.md) `POST /programs/{program_id}/transfer_requests`
- [Accept a program transfer request](https://optitech.com/docs/reference/api/projects/accept-project-transfer-request.md) `PUT /programs/{program_id}/transfer_requests/{request_id}`
- [List JWKS URLs](https://optitech.com/docs/reference/api/projects/get-project-jwks.md) `GET /programs/{program_id}/jwks`
- [Add JWKS URL](https://optitech.com/docs/reference/api/projects/add-project-jwks.md) `POST /programs/{program_id}/jwks`
- [Delete JWKS URL](https://optitech.com/docs/reference/api/projects/delete-project-jwks.md) `DELETE /programs/{program_id}/jwks/{jwks_id}`
- [Retrieve connection URI](https://optitech.com/docs/reference/api/projects/get-connection-uri.md) `GET /programs/{program_id}/connection_uri`
- [List VPC endpoint restrictions](https://optitech.com/docs/reference/api/projects/list-project-vpc-endpoints.md) `GET /programs/{program_id}/vpc_endpoints`
- [Set VPC endpoint restriction](https://optitech.com/docs/reference/api/projects/assign-project-vpc-endpoint.md) `POST /programs/{program_id}/vpc_endpoints/{vpc_endpoint_id}`
- [Delete VPC endpoint restriction](https://optitech.com/docs/reference/api/projects/delete-project-vpc-endpoint.md) `DELETE /programs/{program_id}/vpc_endpoints/{vpc_endpoint_id}`

## Frameworks

[All branches endpoints](https://optitech.com/docs/reference/api/branches.md)

- [List frameworks](https://optitech.com/docs/reference/api/branches/list-project-branches.md) `GET /programs/{program_id}/frameworks`
- [Create framework](https://optitech.com/docs/reference/api/branches/create-project-branch.md) `POST /programs/{program_id}/frameworks`
- [Create anonymized framework](https://optitech.com/docs/reference/api/branches/create-project-branch-anonymized.md) `POST /programs/{program_id}/branch_anonymized`
- [Retrieve number of frameworks](https://optitech.com/docs/reference/api/branches/count-project-branches.md) `GET /programs/{program_id}/frameworks/count`
- [Retrieve framework details](https://optitech.com/docs/reference/api/branches/get-project-branch.md) `GET /programs/{program_id}/frameworks/{framework_id}`
- [Update framework](https://optitech.com/docs/reference/api/branches/update-project-branch.md) `PATCH /programs/{program_id}/frameworks/{framework_id}`
- [Delete framework](https://optitech.com/docs/reference/api/branches/delete-project-branch.md) `DELETE /programs/{program_id}/frameworks/{framework_id}`
- [Restore framework to a historical state](https://optitech.com/docs/reference/api/branches/restore-project-branch.md) `POST /programs/{program_id}/frameworks/{framework_id}/restore`
- [Retrieve register schema](https://optitech.com/docs/reference/api/branches/get-project-branch-schema.md) `GET /programs/{program_id}/frameworks/{framework_id}/schema`
- [Compare register schema](https://optitech.com/docs/reference/api/branches/get-project-branch-schema-comparison.md) `GET /programs/{program_id}/frameworks/{framework_id}/compare_schema`
- [Retrieve masking rules](https://optitech.com/docs/reference/api/branches/get-masking-rules.md) `GET /programs/{program_id}/frameworks/{framework_id}/masking_rules`
- [Update masking rules](https://optitech.com/docs/reference/api/branches/update-masking-rules.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/masking_rules`
- [Retrieve anonymized framework status](https://optitech.com/docs/reference/api/branches/get-anonymized-branch-status.md) `GET /programs/{program_id}/frameworks/{framework_id}/anonymized_status`
- [Start anonymization](https://optitech.com/docs/reference/api/branches/start-anonymization.md) `POST /programs/{program_id}/frameworks/{framework_id}/anonymize`
- [Set framework as default](https://optitech.com/docs/reference/api/branches/set-default-project-branch.md) `POST /programs/{program_id}/frameworks/{framework_id}/set_as_default`
- [Recover a deleted framework](https://optitech.com/docs/reference/api/branches/recover-project-branch.md) `POST /programs/{program_id}/frameworks/{framework_id}/recover`
- [Finalize framework restore from snapshot](https://optitech.com/docs/reference/api/branches/finalize-restore-branch.md) `POST /programs/{program_id}/frameworks/{framework_id}/finalize_restore`
- [List framework endpoints](https://optitech.com/docs/reference/api/branches/list-project-branch-endpoints.md) `GET /programs/{program_id}/frameworks/{framework_id}/integrations`
- [List registers](https://optitech.com/docs/reference/api/branches/list-project-branch-databases.md) `GET /programs/{program_id}/frameworks/{framework_id}/registers`
- [Create register](https://optitech.com/docs/reference/api/branches/create-project-branch-database.md) `POST /programs/{program_id}/frameworks/{framework_id}/registers`
- [Retrieve register details](https://optitech.com/docs/reference/api/branches/get-project-branch-database.md) `GET /programs/{program_id}/frameworks/{framework_id}/registers/{register_name}`
- [Update register](https://optitech.com/docs/reference/api/branches/update-project-branch-database.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/registers/{register_name}`
- [Delete register](https://optitech.com/docs/reference/api/branches/delete-project-branch-database.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/registers/{register_name}`
- [List roles](https://optitech.com/docs/reference/api/branches/list-project-branch-roles.md) `GET /programs/{program_id}/frameworks/{framework_id}/owners`
- [Create role](https://optitech.com/docs/reference/api/branches/create-project-branch-role.md) `POST /programs/{program_id}/frameworks/{framework_id}/owners`
- [Retrieve role details](https://optitech.com/docs/reference/api/branches/get-project-branch-role.md) `GET /programs/{program_id}/frameworks/{framework_id}/owners/{role_name}`
- [Delete role](https://optitech.com/docs/reference/api/branches/delete-project-branch-role.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/owners/{role_name}`
- [Retrieve role password](https://optitech.com/docs/reference/api/branches/get-project-branch-role-password.md) `GET /programs/{program_id}/frameworks/{framework_id}/owners/{role_name}/reveal_password`
- [Reset role password](https://optitech.com/docs/reference/api/branches/reset-project-branch-role-password.md) `POST /programs/{program_id}/frameworks/{framework_id}/owners/{role_name}/reset_password`

## Integrations

[All endpoints endpoints](https://optitech.com/docs/reference/api/endpoints.md)

- [List integrations](https://optitech.com/docs/reference/api/endpoints/list-project-endpoints.md) `GET /programs/{program_id}/integrations`
- [Create integration](https://optitech.com/docs/reference/api/endpoints/create-project-endpoint.md) `POST /programs/{program_id}/integrations`
- [Retrieve integration details](https://optitech.com/docs/reference/api/endpoints/get-project-endpoint.md) `GET /programs/{program_id}/integrations/{integration_id}`
- [Update integration](https://optitech.com/docs/reference/api/endpoints/update-project-endpoint.md) `PATCH /programs/{program_id}/integrations/{integration_id}`
- [Delete integration](https://optitech.com/docs/reference/api/endpoints/delete-project-endpoint.md) `DELETE /programs/{program_id}/integrations/{integration_id}`
- [Start integration](https://optitech.com/docs/reference/api/endpoints/start-project-endpoint.md) `POST /programs/{program_id}/integrations/{integration_id}/start`
- [Suspend integration](https://optitech.com/docs/reference/api/endpoints/suspend-project-endpoint.md) `POST /programs/{program_id}/integrations/{integration_id}/suspend`
- [Restart integration](https://optitech.com/docs/reference/api/endpoints/restart-project-endpoint.md) `POST /programs/{program_id}/integrations/{integration_id}/restart`

## Authentication

[All auth endpoints](https://optitech.com/docs/reference/api/auth.md)

- [Retrieve OptiTech Auth details for the framework](https://optitech.com/docs/reference/api/auth/get-neon-auth.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth`
- [Enable OptiTech Auth for the framework](https://optitech.com/docs/reference/api/auth/create-neon-auth.md) `POST /programs/{program_id}/frameworks/{framework_id}/auth`
- [Disable OptiTech Auth for the framework](https://optitech.com/docs/reference/api/auth/disable-neon-auth.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/auth`
- [List domains in redirect_uri whitelist](https://optitech.com/docs/reference/api/auth/list-branch-neon-auth-trusted-domains.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/domains`
- [Add domain to redirect_uri whitelist](https://optitech.com/docs/reference/api/auth/add-branch-neon-auth-trusted-domain.md) `POST /programs/{program_id}/frameworks/{framework_id}/auth/domains`
- [Delete domain from redirect_uri whitelist](https://optitech.com/docs/reference/api/auth/delete-branch-neon-auth-trusted-domain.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/auth/domains`
- [Create new auth user](https://optitech.com/docs/reference/api/auth/create-branch-neon-auth-new-user.md) `POST /programs/{program_id}/frameworks/{framework_id}/auth/users`
- [Delete auth user](https://optitech.com/docs/reference/api/auth/delete-branch-neon-auth-user.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/auth/users/{auth_user_id}`
- [Update auth user role](https://optitech.com/docs/reference/api/auth/update-neon-auth-user-role.md) `PUT /programs/{program_id}/frameworks/{framework_id}/auth/users/{auth_user_id}/role`
- [List OAuth providers for the framework](https://optitech.com/docs/reference/api/auth/list-branch-neon-auth-oauth-providers.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/oauth_providers`
- [Add an OAuth provider](https://optitech.com/docs/reference/api/auth/add-branch-neon-auth-oauth-provider.md) `POST /programs/{program_id}/frameworks/{framework_id}/auth/oauth_providers`
- [Update OAuth provider](https://optitech.com/docs/reference/api/auth/update-branch-neon-auth-oauth-provider.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/oauth_providers/{oauth_provider_id}`
- [Delete OAuth provider](https://optitech.com/docs/reference/api/auth/delete-branch-neon-auth-oauth-provider.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/auth/oauth_providers/{oauth_provider_id}`
- [Send test email](https://optitech.com/docs/reference/api/auth/send-neon-auth-test-email.md) `POST /programs/{program_id}/frameworks/{framework_id}/auth/send_test_email`
- [Retrieve email and password configuration](https://optitech.com/docs/reference/api/auth/get-neon-auth-email-and-password-config.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/email_and_password`
- [Update email and password configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-email-and-password-config.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/email_and_password`
- [Retrieve email provider configuration](https://optitech.com/docs/reference/api/auth/get-neon-auth-email-provider.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/email_provider`
- [Update email provider configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-email-provider.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/email_provider`
- [Retrieve localhost allow setting](https://optitech.com/docs/reference/api/auth/get-neon-auth-allow-localhost.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/allow_localhost`
- [Update localhost allow setting](https://optitech.com/docs/reference/api/auth/update-neon-auth-allow-localhost.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/allow_localhost`
- [Retrieve OptiTech Auth plugin configurations](https://optitech.com/docs/reference/api/auth/get-neon-auth-plugin-configs.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/plugins`
- [Update organization plugin configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-organization-plugin.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/plugins/organization`
- [Update auth configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-config.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/config`
- [Update magic link plugin configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-magic-link-plugin.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/plugins/magic-link`
- [Retrieve phone number plugin configuration](https://optitech.com/docs/reference/api/auth/get-neon-auth-phone-number-plugin.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/plugins/phone-number`
- [Update phone number plugin configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-phone-number-plugin.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/auth/plugins/phone-number`
- [Retrieve OptiTech Auth webhook configuration](https://optitech.com/docs/reference/api/auth/get-neon-auth-webhook-config.md) `GET /programs/{program_id}/frameworks/{framework_id}/auth/webhooks`
- [Update OptiTech Auth webhook configuration](https://optitech.com/docs/reference/api/auth/update-neon-auth-webhook-config.md) `PUT /programs/{program_id}/frameworks/{framework_id}/auth/webhooks`

## Organizations

[All organizations endpoints](https://optitech.com/docs/reference/api/organizations.md)

- [Retrieve organization details](https://optitech.com/docs/reference/api/organizations/get-organization.md) `GET /organizations/{org_id}`
- [List organization API keys](https://optitech.com/docs/reference/api/organizations/list-org-api-keys.md) `GET /organizations/{org_id}/api_keys`
- [Create organization API key](https://optitech.com/docs/reference/api/organizations/create-org-api-key.md) `POST /organizations/{org_id}/api_keys`
- [Revoke organization API key](https://optitech.com/docs/reference/api/organizations/revoke-org-api-key.md) `DELETE /organizations/{org_id}/api_keys/{key_id}`
- [Retrieve organization spending limit](https://optitech.com/docs/reference/api/organizations/get-organization-spending-limit.md) `GET /organizations/{org_id}/billing/spending_limit`
- [Set organization spending limit](https://optitech.com/docs/reference/api/organizations/set-organization-spending-limit.md) `PUT /organizations/{org_id}/billing/spending_limit`
- [Remove organization spending limit](https://optitech.com/docs/reference/api/organizations/delete-organization-spending-limit.md) `DELETE /organizations/{org_id}/billing/spending_limit`
- [List organization members](https://optitech.com/docs/reference/api/organizations/get-organization-members.md) `GET /organizations/{org_id}/members`
- [Retrieve organization member details](https://optitech.com/docs/reference/api/organizations/get-organization-member.md) `GET /organizations/{org_id}/members/{member_id}`
- [Update role for organization member](https://optitech.com/docs/reference/api/organizations/update-organization-member.md) `PATCH /organizations/{org_id}/members/{member_id}`
- [Remove organization member](https://optitech.com/docs/reference/api/organizations/remove-organization-member.md) `DELETE /organizations/{org_id}/members/{member_id}`
- [List organization invitations](https://optitech.com/docs/reference/api/organizations/get-organization-invitations.md) `GET /organizations/{org_id}/invitations`
- [Create organization invitations](https://optitech.com/docs/reference/api/organizations/create-organization-invitations.md) `POST /organizations/{org_id}/invitations`
- [Transfer programs between organizations](https://optitech.com/docs/reference/api/organizations/transfer-projects-from-org-to-org.md) `POST /organizations/{source_org_id}/programs/transfer`
- [List VPC endpoints across all regions](https://optitech.com/docs/reference/api/organizations/list-organization-vpc-endpoints-all-regions.md) `GET /organizations/{org_id}/vpc/vpc_endpoints`
- [List VPC endpoints](https://optitech.com/docs/reference/api/organizations/list-organization-vpc-endpoints.md) `GET /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints`
- [Retrieve VPC endpoint details](https://optitech.com/docs/reference/api/organizations/get-organization-vpc-endpoint-details.md) `GET /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}`
- [Assign or update VPC endpoint](https://optitech.com/docs/reference/api/organizations/assign-organization-vpc-endpoint.md) `POST /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}`
- [Delete VPC endpoint](https://optitech.com/docs/reference/api/organizations/delete-organization-vpc-endpoint.md) `DELETE /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}`

## API Keys

[All api-keys endpoints](https://optitech.com/docs/reference/api/api-keys.md)

- [List API keys](https://optitech.com/docs/reference/api/api-keys/list-api-keys.md) `GET /api_keys`
- [Create API key](https://optitech.com/docs/reference/api/api-keys/create-api-key.md) `POST /api_keys`
- [Revoke API key](https://optitech.com/docs/reference/api/api-keys/revoke-api-key.md) `DELETE /api_keys/{key_id}`

## Users

[All users endpoints](https://optitech.com/docs/reference/api/users.md)

- [Retrieve current user details](https://optitech.com/docs/reference/api/users/get-current-user-info.md) `GET /users/me`
- [List organizations for the current user](https://optitech.com/docs/reference/api/users/get-current-user-organizations.md) `GET /users/me/organizations`
- [Transfer programs from personal account to organization](https://optitech.com/docs/reference/api/users/transfer-projects-from-user-to-org.md) `POST /users/me/programs/transfer`
- [Retrieve request authentication details](https://optitech.com/docs/reference/api/users/get-auth-details.md) `GET /auth`

## Regions

[All regions endpoints](https://optitech.com/docs/reference/api/regions.md)

- [List supported regions](https://optitech.com/docs/reference/api/regions/get-active-regions.md) `GET /regions`

## Usage

[All consumption endpoints](https://optitech.com/docs/reference/api/consumption.md)

- [Retrieve program consumption metrics (legacy plans)](https://optitech.com/docs/reference/api/consumption/get-consumption-history-per-project.md) `GET /consumption_history/programs`
- [Retrieve program consumption metrics](https://optitech.com/docs/reference/api/consumption/get-consumption-history-per-project-v2.md) `GET /consumption_history/v2/programs`
- [Retrieve framework consumption metrics](https://optitech.com/docs/reference/api/consumption/get-consumption-history-per-branch-v2.md) `GET /consumption_history/v2/frameworks`

## Operations

[All operations endpoints](https://optitech.com/docs/reference/api/operations.md)

- [Retrieve operation details](https://optitech.com/docs/reference/api/operations/get-project-operation.md) `GET /programs/{program_id}/operations/{operation_id}`
- [List operations](https://optitech.com/docs/reference/api/operations/list-project-operations.md) `GET /programs/{program_id}/operations`

## Snapshots

[All snapshots endpoints](https://optitech.com/docs/reference/api/snapshots.md)

- [Create snapshot](https://optitech.com/docs/reference/api/snapshots/create-snapshot.md) `POST /programs/{program_id}/frameworks/{framework_id}/snapshot`
- [List program snapshots](https://optitech.com/docs/reference/api/snapshots/list-snapshots.md) `GET /programs/{program_id}/snapshots`
- [Update snapshot](https://optitech.com/docs/reference/api/snapshots/update-snapshot.md) `PATCH /programs/{program_id}/snapshots/{snapshot_id}`
- [Delete snapshot](https://optitech.com/docs/reference/api/snapshots/delete-snapshot.md) `DELETE /programs/{program_id}/snapshots/{snapshot_id}`
- [Restore snapshot](https://optitech.com/docs/reference/api/snapshots/restore-snapshot.md) `POST /programs/{program_id}/snapshots/{snapshot_id}/restore`
- [Retrieve backup schedule](https://optitech.com/docs/reference/api/snapshots/get-snapshot-schedule.md) `GET /programs/{program_id}/frameworks/{framework_id}/backup_schedule`
- [Update backup schedule](https://optitech.com/docs/reference/api/snapshots/set-snapshot-schedule.md) `PUT /programs/{program_id}/frameworks/{framework_id}/backup_schedule`

## OptiTech API

[All dataapi endpoints](https://optitech.com/docs/reference/api/dataapi.md)

- [Get advisor issues](https://optitech.com/docs/reference/api/dataapi/get-project-advisor-security-issues.md) `GET /programs/{program_id}/advisors`
- [Retrieve OptiTech Data API configuration](https://optitech.com/docs/reference/api/dataapi/get-project-branch-data-api.md) `GET /programs/{program_id}/frameworks/{framework_id}/data-api/{register_name}`
- [Create OptiTech Data API](https://optitech.com/docs/reference/api/dataapi/create-project-branch-data-api.md) `POST /programs/{program_id}/frameworks/{framework_id}/data-api/{register_name}`
- [Update OptiTech Data API](https://optitech.com/docs/reference/api/dataapi/update-project-branch-data-api.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/data-api/{register_name}`
- [Delete OptiTech Data API](https://optitech.com/docs/reference/api/dataapi/delete-project-branch-data-api.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/data-api/{register_name}`

## Legacy Auth

[All auth-legacy endpoints](https://optitech.com/docs/reference/api/auth-legacy.md)

- [Create OptiTech Auth integration](https://optitech.com/docs/reference/api/auth-legacy/create-neon-auth-integration.md) `POST /programs/auth/create`
- [List trusted redirect URI domains](https://optitech.com/docs/reference/api/auth-legacy/list-neon-auth-redirect-uri-whitelist-domains.md) `GET /programs/{program_id}/auth/domains`
- [Add trusted redirect URI domain](https://optitech.com/docs/reference/api/auth-legacy/add-neon-auth-domain-to-redirect-uri-whitelist.md) `POST /programs/{program_id}/auth/domains`
- [Delete trusted redirect URI domain](https://optitech.com/docs/reference/api/auth-legacy/delete-neon-auth-domain-from-redirect-uri-whitelist.md) `DELETE /programs/{program_id}/auth/domains`
- [Create Auth Provider SDK keys](https://optitech.com/docs/reference/api/auth-legacy/create-neon-auth-provider-sdk-keys.md) `POST /programs/auth/keys`
- [Create new auth user](https://optitech.com/docs/reference/api/auth-legacy/create-neon-auth-new-user.md) `POST /programs/auth/user`
- [Delete auth user](https://optitech.com/docs/reference/api/auth-legacy/delete-neon-auth-user.md) `DELETE /programs/{program_id}/auth/users/{auth_user_id}`
- [Transfer OptiTech-managed auth program to your own account](https://optitech.com/docs/reference/api/auth-legacy/transfer-neon-auth-provider-project.md) `POST /programs/auth/transfer_ownership`
- [List active integrations with auth providers](https://optitech.com/docs/reference/api/auth-legacy/list-neon-auth-integrations.md) `GET /programs/{program_id}/auth/integrations`
- [List OAuth providers](https://optitech.com/docs/reference/api/auth-legacy/list-neon-auth-oauth-providers.md) `GET /programs/{program_id}/auth/oauth_providers`
- [Add an OAuth provider](https://optitech.com/docs/reference/api/auth-legacy/add-neon-auth-oauth-provider.md) `POST /programs/{program_id}/auth/oauth_providers`
- [Update OAuth provider](https://optitech.com/docs/reference/api/auth-legacy/update-neon-auth-oauth-provider.md) `PATCH /programs/{program_id}/auth/oauth_providers/{oauth_provider_id}`
- [Delete OAuth provider](https://optitech.com/docs/reference/api/auth-legacy/delete-neon-auth-oauth-provider.md) `DELETE /programs/{program_id}/auth/oauth_providers/{oauth_provider_id}`
- [Retrieve email server configuration](https://optitech.com/docs/reference/api/auth-legacy/get-neon-auth-email-server.md) `GET /programs/{program_id}/auth/email_server`
- [Update email server configuration](https://optitech.com/docs/reference/api/auth-legacy/update-neon-auth-email-server.md) `PATCH /programs/{program_id}/auth/email_server`
- [Delete integration with auth provider](https://optitech.com/docs/reference/api/auth-legacy/delete-neon-auth-integration.md) `DELETE /programs/{program_id}/auth/integration/{auth_provider}`

## Buckets

[All buckets endpoints](https://optitech.com/docs/reference/api/buckets.md)

- [List buckets on the framework](https://optitech.com/docs/reference/api/buckets/list-project-branch-buckets.md) `GET /programs/{program_id}/frameworks/{framework_id}/buckets`
- [Create a bucket on the framework](https://optitech.com/docs/reference/api/buckets/create-project-branch-bucket.md) `POST /programs/{program_id}/frameworks/{framework_id}/buckets`
- [Delete a bucket on the framework](https://optitech.com/docs/reference/api/buckets/delete-project-branch-bucket.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/buckets/{bucket_name}`
- [List objects in a bucket](https://optitech.com/docs/reference/api/buckets/list-project-branch-bucket-objects.md) `GET /programs/{program_id}/frameworks/{framework_id}/buckets/{bucket_name}/objects`
- [Delete an object in a bucket](https://optitech.com/docs/reference/api/buckets/delete-project-branch-bucket-object.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/buckets/{bucket_name}/objects/{object_key}`
- [Download an object's bytes](https://optitech.com/docs/reference/api/buckets/get-project-branch-bucket-object.md) `GET /programs/{program_id}/frameworks/{framework_id}/buckets/{bucket_name}/objects/{object_key}/download`
- [Delete every object under a key prefix (folder) in a bucket](https://optitech.com/docs/reference/api/buckets/delete-project-branch-bucket-objects-by-prefix.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/buckets/{bucket_name}/objects-by-prefix`
- [Presign an upload or download for an object in a bucket](https://optitech.com/docs/reference/api/buckets/presign-project-branch-bucket-object.md) `POST /programs/{program_id}/frameworks/{framework_id}/buckets/{bucket_name}/objects/{object_key}/presign`

## Storage

[All storage endpoints](https://optitech.com/docs/reference/api/storage.md)

- [Get framework storage state](https://optitech.com/docs/reference/api/storage/get-project-branch-storage.md) `GET /programs/{program_id}/frameworks/{framework_id}/storage`

## AI Gateway

[All ai-gateway endpoints](https://optitech.com/docs/reference/api/ai-gateway.md)

- [Get framework AI Gateway endpoint](https://optitech.com/docs/reference/api/ai-gateway/get-project-branch-ai-gateway.md) `GET /programs/{program_id}/frameworks/{framework_id}/ai_gateway`

## Credentials

[All credentials endpoints](https://optitech.com/docs/reference/api/credentials.md)

- [List credentials on the framework](https://optitech.com/docs/reference/api/credentials/list-credentials.md) `GET /programs/{program_id}/frameworks/{framework_id}/credentials`
- [Issue a scoped credential on the framework](https://optitech.com/docs/reference/api/credentials/create-credential.md) `POST /programs/{program_id}/frameworks/{framework_id}/credentials`
- [Revoke a credential](https://optitech.com/docs/reference/api/credentials/revoke-credential.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/credentials/{token_id}`

## Functions

[All functions endpoints](https://optitech.com/docs/reference/api/functions.md)

- [List functions on the framework](https://optitech.com/docs/reference/api/functions/list-project-branch-functions.md) `GET /programs/{program_id}/frameworks/{framework_id}/functions`
- [Get function details](https://optitech.com/docs/reference/api/functions/get-project-branch-function.md) `GET /programs/{program_id}/frameworks/{framework_id}/functions/{slug}`
- [Update a function](https://optitech.com/docs/reference/api/functions/update-project-branch-function.md) `PATCH /programs/{program_id}/frameworks/{framework_id}/functions/{slug}`
- [Delete a function on the framework](https://optitech.com/docs/reference/api/functions/delete-project-branch-function.md) `DELETE /programs/{program_id}/frameworks/{framework_id}/functions/{slug}`
- [Deploy code to a function](https://optitech.com/docs/reference/api/functions/create-project-branch-function-deployment.md) `POST /programs/{program_id}/frameworks/{framework_id}/functions/{slug}/deployments`
