{"files":{"SKILL.md":"---\nname: neon-api\ndescription: \"Neon API skill. Use when working with Neon for projects, api_keys, consumption_history. Covers 138 endpoints.\"\nversion: 1.0.0\ngenerator: lapsh\n---\n\n# Neon API\nAPI version: v2\n\n## Auth\nBearer bearer | ApiKey zenith in cookie | ApiKey keycloak_token in cookie\n\n## Base URL\nhttps://console.neon.tech/api/v2\n\n## Setup\n1. Set Authorization header with Bearer token\n2. GET /api_keys -- list api keys\n3. POST /api_keys -- create first api_key\n\n## Endpoints\n138 endpoints across 7 groups. See references/api-spec.lap for full details.\n\n### Projects\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /projects/{project_id}/advisors | Get advisor issues |\n| GET | /projects/{project_id}/operations/{operation_id} | Retrieve operation details |\n| GET | /projects | List projects |\n| POST | /projects | Create project |\n| GET | /projects/shared | List shared projects |\n| GET | /projects/{project_id} | Retrieve project details |\n| PATCH | /projects/{project_id} | Update project |\n| DELETE | /projects/{project_id} | Delete project |\n| POST | /projects/{project_id}/restore | Restore a deleted project |\n| POST | /projects/{project_id}/recover | Recover a deleted project |\n| GET | /projects/{project_id}/operations | List operations |\n| GET | /projects/{project_id}/permissions | List project access |\n| POST | /projects/{project_id}/permissions | Grant project access |\n| DELETE | /projects/{project_id}/permissions/{permission_id} | Revoke project access |\n| GET | /projects/{project_id}/available_preload_libraries | Return available shared preload libraries |\n| POST | /projects/{project_id}/transfer_requests | Create a project transfer request |\n| PUT | /projects/{project_id}/transfer_requests/{request_id} | Accept a project transfer request |\n| GET | /projects/{project_id}/jwks | List JWKS URLs |\n| POST | /projects/{project_id}/jwks | Add JWKS URL |\n| DELETE | /projects/{project_id}/jwks/{jwks_id} | Delete JWKS URL |\n| POST | /projects/{project_id}/branches/{branch_id}/data-api/{database_name} | Create Neon Data API |\n| PATCH | /projects/{project_id}/branches/{branch_id}/data-api/{database_name} | Update Neon Data API |\n| DELETE | /projects/{project_id}/branches/{branch_id}/data-api/{database_name} | Delete Neon Data API |\n| GET | /projects/{project_id}/branches/{branch_id}/data-api/{database_name} | Get Neon Data API |\n| POST | /projects/auth/create | Create Neon Auth integration |\n| GET | /projects/{project_id}/branches/{branch_id}/auth | Get details of Neon Auth for the branch |\n| POST | /projects/{project_id}/branches/{branch_id}/auth | Enable Neon Auth for the branch |\n| DELETE | /projects/{project_id}/branches/{branch_id}/auth | Disables Neon Auth for the branch |\n| GET | /projects/{project_id}/auth/domains | List domains in redirect_uri whitelist |\n| POST | /projects/{project_id}/auth/domains | Add domain to redirect_uri whitelist |\n| DELETE | /projects/{project_id}/auth/domains | Delete domain from redirect_uri whitelist |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/domains | List domains in redirect_uri whitelist |\n| POST | /projects/{project_id}/branches/{branch_id}/auth/domains | Add domain to redirect_uri whitelist |\n| DELETE | /projects/{project_id}/branches/{branch_id}/auth/domains | Delete domain from redirect_uri whitelist |\n| POST | /projects/auth/keys | Create Auth Provider SDK keys |\n| POST | /projects/auth/user | Create new auth user |\n| POST | /projects/{project_id}/branches/{branch_id}/auth/users | Create new auth user |\n| DELETE | /projects/{project_id}/branches/{branch_id}/auth/users/{auth_user_id} | Delete auth user |\n| PUT | /projects/{project_id}/branches/{branch_id}/auth/users/{auth_user_id}/role | Update auth user role |\n| DELETE | /projects/{project_id}/auth/users/{auth_user_id} | Delete auth user |\n| POST | /projects/auth/transfer_ownership | Transfer Neon-managed auth project to your own account |\n| GET | /projects/{project_id}/auth/integrations | Lists active integrations with auth providers |\n| GET | /projects/{project_id}/auth/oauth_providers | List OAuth providers |\n| POST | /projects/{project_id}/auth/oauth_providers | Add a OAuth provider |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/oauth_providers | List OAuth providers for neon auth for a branch |\n| POST | /projects/{project_id}/branches/{branch_id}/auth/oauth_providers | Add a OAuth provider |\n| PATCH | /projects/{project_id}/auth/oauth_providers/{oauth_provider_id} | Update OAuth provider |\n| DELETE | /projects/{project_id}/auth/oauth_providers/{oauth_provider_id} | Delete OAuth provider |\n| PATCH | /projects/{project_id}/branches/{branch_id}/auth/oauth_providers/{oauth_provider_id} | Update OAuth provider |\n| DELETE | /projects/{project_id}/branches/{branch_id}/auth/oauth_providers/{oauth_provider_id} | Delete OAuth provider |\n| GET | /projects/{project_id}/auth/email_server | Get email server configuration |\n| PATCH | /projects/{project_id}/auth/email_server | Update email server configuration |\n| POST | /projects/{project_id}/branches/{branch_id}/auth/send_test_email | Send test email |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/email_and_password | Get email and password configuration |\n| PATCH | /projects/{project_id}/branches/{branch_id}/auth/email_and_password | Update email and password configuration |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/email_provider | Get email provider configuration |\n| PATCH | /projects/{project_id}/branches/{branch_id}/auth/email_provider | Update email provider configuration |\n| DELETE | /projects/{project_id}/auth/integration/{auth_provider} | Delete integration with auth provider |\n| GET | /projects/{project_id}/connection_uri | Retrieve connection URI |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/allow_localhost | Get allow localhost |\n| PATCH | /projects/{project_id}/branches/{branch_id}/auth/allow_localhost | Update allow localhost |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/plugins | Get all plugin configurations |\n| PATCH | /projects/{project_id}/branches/{branch_id}/auth/plugins/organization | Update organization plugin configuration |\n| GET | /projects/{project_id}/branches/{branch_id}/auth/webhooks | Get webhook configuration for Neon Auth |\n| PUT | /projects/{project_id}/branches/{branch_id}/auth/webhooks | Update webhook configuration for Neon Auth |\n| POST | /projects/{project_id}/branches | Create branch |\n| GET | /projects/{project_id}/branches | List branches |\n| POST | /projects/{project_id}/branch_anonymized | Create anonymized branch |\n| GET | /projects/{project_id}/branches/count | Retrieve number of branches |\n| GET | /projects/{project_id}/branches/{branch_id} | Retrieve branch details |\n| DELETE | /projects/{project_id}/branches/{branch_id} | Delete branch |\n| PATCH | /projects/{project_id}/branches/{branch_id} | Update branch |\n| POST | /projects/{project_id}/branches/{branch_id}/restore | Restore branch |\n| GET | /projects/{project_id}/branches/{branch_id}/schema | Retrieve database schema |\n| GET | /projects/{project_id}/branches/{branch_id}/compare_schema | Compare database schema |\n| GET | /projects/{project_id}/branches/{branch_id}/masking_rules | Get masking rules |\n| PATCH | /projects/{project_id}/branches/{branch_id}/masking_rules | Update masking rules |\n| GET | /projects/{project_id}/branches/{branch_id}/anonymized_status | Get anonymized branch status |\n| POST | /projects/{project_id}/branches/{branch_id}/anonymize | Start anonymization |\n| POST | /projects/{project_id}/branches/{branch_id}/set_as_default | Set branch as default |\n| POST | /projects/{project_id}/branches/{branch_id}/finalize_restore | Finalize restore |\n| GET | /projects/{project_id}/branches/{branch_id}/endpoints | List branch endpoints |\n| GET | /projects/{project_id}/branches/{branch_id}/databases | List databases |\n| POST | /projects/{project_id}/branches/{branch_id}/databases | Create database |\n| GET | /projects/{project_id}/branches/{branch_id}/databases/{database_name} | Retrieve database details |\n| PATCH | /projects/{project_id}/branches/{branch_id}/databases/{database_name} | Update database |\n| DELETE | /projects/{project_id}/branches/{branch_id}/databases/{database_name} | Delete database |\n| GET | /projects/{project_id}/branches/{branch_id}/roles | List roles |\n| POST | /projects/{project_id}/branches/{branch_id}/roles | Create role |\n| GET | /projects/{project_id}/branches/{branch_id}/roles/{role_name} | Retrieve role details |\n| DELETE | /projects/{project_id}/branches/{branch_id}/roles/{role_name} | Delete role |\n| GET | /projects/{project_id}/branches/{branch_id}/roles/{role_name}/reveal_password | Retrieve role password |\n| POST | /projects/{project_id}/branches/{branch_id}/roles/{role_name}/reset_password | Reset role password |\n| GET | /projects/{project_id}/vpc_endpoints | List VPC endpoint restrictions |\n| POST | /projects/{project_id}/vpc_endpoints/{vpc_endpoint_id} | Set VPC endpoint restriction |\n| DELETE | /projects/{project_id}/vpc_endpoints/{vpc_endpoint_id} | Delete VPC endpoint restriction |\n| POST | /projects/{project_id}/endpoints | Create compute endpoint |\n| GET | /projects/{project_id}/endpoints | List compute endpoints |\n| GET | /projects/{project_id}/endpoints/{endpoint_id} | Retrieve compute endpoint details |\n| DELETE | /projects/{project_id}/endpoints/{endpoint_id} | Delete compute endpoint |\n| PATCH | /projects/{project_id}/endpoints/{endpoint_id} | Update compute endpoint |\n| POST | /projects/{project_id}/endpoints/{endpoint_id}/start | Start compute endpoint |\n| POST | /projects/{project_id}/endpoints/{endpoint_id}/suspend | Suspend compute endpoint |\n| POST | /projects/{project_id}/endpoints/{endpoint_id}/restart | Restart compute endpoint |\n| POST | /projects/{project_id}/branches/{branch_id}/snapshot | Create snapshot |\n| GET | /projects/{project_id}/snapshots | List project snapshots |\n| DELETE | /projects/{project_id}/snapshots/{snapshot_id} | Delete snapshot |\n| PATCH | /projects/{project_id}/snapshots/{snapshot_id} | Update snapshot |\n| POST | /projects/{project_id}/snapshots/{snapshot_id}/restore | Restore snapshot |\n| GET | /projects/{project_id}/branches/{branch_id}/backup_schedule | View backup schedule |\n| PUT | /projects/{project_id}/branches/{branch_id}/backup_schedule | Update backup schedule |\n\n### Api_keys\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /api_keys | List API keys |\n| POST | /api_keys | Create API key |\n| DELETE | /api_keys/{key_id} | Revoke API key |\n\n### Consumption_history\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /consumption_history/account | Retrieve account consumption metrics (legacy plans) |\n| GET | /consumption_history/projects | Retrieve project consumption metrics (legacy plans) |\n| GET | /consumption_history/v2/projects | Retrieve project consumption metrics |\n\n### Organizations\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /organizations/{org_id} | Retrieve organization details |\n| GET | /organizations/{org_id}/api_keys | List organization API keys |\n| POST | /organizations/{org_id}/api_keys | Create organization API key |\n| DELETE | /organizations/{org_id}/api_keys/{key_id} | Revoke organization API key |\n| GET | /organizations/{org_id}/members | Retrieve organization members details |\n| GET | /organizations/{org_id}/members/{member_id} | Retrieve organization member details |\n| PATCH | /organizations/{org_id}/members/{member_id} | Update role for organization member |\n| DELETE | /organizations/{org_id}/members/{member_id} | Remove member from the organization |\n| GET | /organizations/{org_id}/invitations | Retrieve organization invitation details |\n| POST | /organizations/{org_id}/invitations | Create organization invitations |\n| POST | /organizations/{source_org_id}/projects/transfer | Transfer projects between organizations |\n| GET | /organizations/{org_id}/vpc/vpc_endpoints | List VPC endpoints across all regions |\n| GET | /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints | List VPC endpoints |\n| GET | /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id} | Retrieve VPC endpoint details |\n| POST | /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id} | Assign or update VPC endpoint |\n| DELETE | /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id} | Delete VPC endpoint |\n\n### Regions\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /regions | List supported regions |\n\n### Users\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /users/me | Retrieve current user details |\n| GET | /users/me/organizations | Retrieve current user organizations list |\n| POST | /users/me/projects/transfer | Transfer projects from personal account to organization |\n\n### Auth\n| Method | Path | Description |\n|--------|------|-------------|\n| GET | /auth | Get request authentication details |\n\n## Common Questions\nMatch user requests to endpoints in references/api-spec.lap. Key patterns:\n- \"List all advisors?\" -> GET /projects/{project_id}/advisors\n- \"List all api_keys?\" -> GET /api_keys\n- \"Create a api_key?\" -> POST /api_keys\n- \"Delete a api_key?\" -> DELETE /api_keys/{key_id}\n- \"Get operation details?\" -> GET /projects/{project_id}/operations/{operation_id}\n- \"Search projects?\" -> GET /projects\n- \"Create a project?\" -> POST /projects\n- \"Search shared?\" -> GET /projects/shared\n- \"Get project details?\" -> GET /projects/{project_id}\n- \"Partially update a project?\" -> PATCH /projects/{project_id}\n- \"Delete a project?\" -> DELETE /projects/{project_id}\n- \"Create a restore?\" -> POST /projects/{project_id}/restore\n- \"Create a recover?\" -> POST /projects/{project_id}/recover\n- \"List all operations?\" -> GET /projects/{project_id}/operations\n- \"List all permissions?\" -> GET /projects/{project_id}/permissions\n- \"Create a permission?\" -> POST /projects/{project_id}/permissions\n- \"Delete a permission?\" -> DELETE /projects/{project_id}/permissions/{permission_id}\n- \"List all available_preload_libraries?\" -> GET /projects/{project_id}/available_preload_libraries\n- \"Create a transfer_request?\" -> POST /projects/{project_id}/transfer_requests\n- \"Update a transfer_request?\" -> PUT /projects/{project_id}/transfer_requests/{request_id}\n- \"List all jwks?\" -> GET /projects/{project_id}/jwks\n- \"Create a jwk?\" -> POST /projects/{project_id}/jwks\n- \"Delete a jwk?\" -> DELETE /projects/{project_id}/jwks/{jwks_id}\n- \"Partially update a data-api?\" -> PATCH /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n- \"Delete a data-api?\" -> DELETE /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n- \"Get data-api details?\" -> GET /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n- \"Create a create?\" -> POST /projects/auth/create\n- \"List all auth?\" -> GET /projects/{project_id}/branches/{branch_id}/auth\n- \"Create a auth?\" -> POST /projects/{project_id}/branches/{branch_id}/auth\n- \"List all domains?\" -> GET /projects/{project_id}/auth/domains\n- \"Create a domain?\" -> POST /projects/{project_id}/auth/domains\n- \"Create a key?\" -> POST /projects/auth/keys\n- \"Create a user?\" -> POST /projects/auth/user\n- \"Delete a user?\" -> DELETE /projects/{project_id}/branches/{branch_id}/auth/users/{auth_user_id}\n- \"Create a transfer_ownership?\" -> POST /projects/auth/transfer_ownership\n- \"List all integrations?\" -> GET /projects/{project_id}/auth/integrations\n- \"List all oauth_providers?\" -> GET /projects/{project_id}/auth/oauth_providers\n- \"Create a oauth_provider?\" -> POST /projects/{project_id}/auth/oauth_providers\n- \"Partially update a oauth_provider?\" -> PATCH /projects/{project_id}/auth/oauth_providers/{oauth_provider_id}\n- \"Delete a oauth_provider?\" -> DELETE /projects/{project_id}/auth/oauth_providers/{oauth_provider_id}\n- \"List all email_server?\" -> GET /projects/{project_id}/auth/email_server\n- \"Create a send_test_email?\" -> POST /projects/{project_id}/branches/{branch_id}/auth/send_test_email\n- \"List all email_and_password?\" -> GET /projects/{project_id}/branches/{branch_id}/auth/email_and_password\n- \"List all email_provider?\" -> GET /projects/{project_id}/branches/{branch_id}/auth/email_provider\n- \"Delete a integration?\" -> DELETE /projects/{project_id}/auth/integration/{auth_provider}\n- \"List all connection_uri?\" -> GET /projects/{project_id}/connection_uri\n- \"List all allow_localhost?\" -> GET /projects/{project_id}/branches/{branch_id}/auth/allow_localhost\n- \"List all plugins?\" -> GET /projects/{project_id}/branches/{branch_id}/auth/plugins\n- \"List all webhooks?\" -> GET /projects/{project_id}/branches/{branch_id}/auth/webhooks\n- \"Create a branche?\" -> POST /projects/{project_id}/branches\n- \"Search branches?\" -> GET /projects/{project_id}/branches\n- \"Create a branch_anonymized?\" -> POST /projects/{project_id}/branch_anonymized\n- \"Search count?\" -> GET /projects/{project_id}/branches/count\n- \"Get branche details?\" -> GET /projects/{project_id}/branches/{branch_id}\n- \"Delete a branche?\" -> DELETE /projects/{project_id}/branches/{branch_id}\n- \"Partially update a branche?\" -> PATCH /projects/{project_id}/branches/{branch_id}\n- \"List all schema?\" -> GET /projects/{project_id}/branches/{branch_id}/schema\n- \"List all compare_schema?\" -> GET /projects/{project_id}/branches/{branch_id}/compare_schema\n- \"List all masking_rules?\" -> GET /projects/{project_id}/branches/{branch_id}/masking_rules\n- \"List all anonymized_status?\" -> GET /projects/{project_id}/branches/{branch_id}/anonymized_status\n- \"Create a anonymize?\" -> POST /projects/{project_id}/branches/{branch_id}/anonymize\n- \"Create a set_as_default?\" -> POST /projects/{project_id}/branches/{branch_id}/set_as_default\n- \"Create a finalize_restore?\" -> POST /projects/{project_id}/branches/{branch_id}/finalize_restore\n- \"List all endpoints?\" -> GET /projects/{project_id}/branches/{branch_id}/endpoints\n- \"List all databases?\" -> GET /projects/{project_id}/branches/{branch_id}/databases\n- \"Create a database?\" -> POST /projects/{project_id}/branches/{branch_id}/databases\n- \"Get database details?\" -> GET /projects/{project_id}/branches/{branch_id}/databases/{database_name}\n- \"Partially update a database?\" -> PATCH /projects/{project_id}/branches/{branch_id}/databases/{database_name}\n- \"Delete a database?\" -> DELETE /projects/{project_id}/branches/{branch_id}/databases/{database_name}\n- \"List all roles?\" -> GET /projects/{project_id}/branches/{branch_id}/roles\n- \"Create a role?\" -> POST /projects/{project_id}/branches/{branch_id}/roles\n- \"Get role details?\" -> GET /projects/{project_id}/branches/{branch_id}/roles/{role_name}\n- \"Delete a role?\" -> DELETE /projects/{project_id}/branches/{branch_id}/roles/{role_name}\n- \"List all reveal_password?\" -> GET /projects/{project_id}/branches/{branch_id}/roles/{role_name}/reveal_password\n- \"Create a reset_password?\" -> POST /projects/{project_id}/branches/{branch_id}/roles/{role_name}/reset_password\n- \"List all vpc_endpoints?\" -> GET /projects/{project_id}/vpc_endpoints\n- \"Delete a vpc_endpoint?\" -> DELETE /projects/{project_id}/vpc_endpoints/{vpc_endpoint_id}\n- \"Create a endpoint?\" -> POST /projects/{project_id}/endpoints\n- \"Get endpoint details?\" -> GET /projects/{project_id}/endpoints/{endpoint_id}\n- \"Delete a endpoint?\" -> DELETE /projects/{project_id}/endpoints/{endpoint_id}\n- \"Partially update a endpoint?\" -> PATCH /projects/{project_id}/endpoints/{endpoint_id}\n- \"Create a start?\" -> POST /projects/{project_id}/endpoints/{endpoint_id}/start\n- \"Create a suspend?\" -> POST /projects/{project_id}/endpoints/{endpoint_id}/suspend\n- \"Create a restart?\" -> POST /projects/{project_id}/endpoints/{endpoint_id}/restart\n- \"List all account?\" -> GET /consumption_history/account\n- \"List all projects?\" -> GET /consumption_history/projects\n- \"Get organization details?\" -> GET /organizations/{org_id}\n- \"List all members?\" -> GET /organizations/{org_id}/members\n- \"Get member details?\" -> GET /organizations/{org_id}/members/{member_id}\n- \"Partially update a member?\" -> PATCH /organizations/{org_id}/members/{member_id}\n- \"Delete a member?\" -> DELETE /organizations/{org_id}/members/{member_id}\n- \"List all invitations?\" -> GET /organizations/{org_id}/invitations\n- \"Create a invitation?\" -> POST /organizations/{org_id}/invitations\n- \"Create a transfer?\" -> POST /organizations/{source_org_id}/projects/transfer\n- \"Get vpc_endpoint details?\" -> GET /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}\n- \"List all regions?\" -> GET /regions\n- \"List all me?\" -> GET /users/me\n- \"List all organizations?\" -> GET /users/me/organizations\n- \"Create a snapshot?\" -> POST /projects/{project_id}/branches/{branch_id}/snapshot\n- \"List all snapshots?\" -> GET /projects/{project_id}/snapshots\n- \"Delete a snapshot?\" -> DELETE /projects/{project_id}/snapshots/{snapshot_id}\n- \"Partially update a snapshot?\" -> PATCH /projects/{project_id}/snapshots/{snapshot_id}\n- \"List all backup_schedule?\" -> GET /projects/{project_id}/branches/{branch_id}/backup_schedule\n- \"How to authenticate?\" -> See Auth section above\n\n## Response Tips\n- Check response schemas in references/api-spec.lap for field details\n- Paginated endpoints accept limit/offset or cursor parameters\n- Create/update endpoints return the modified resource on success\n- Error responses include status codes and descriptions in the spec\n\n## References\n- Full spec: See references/api-spec.lap for complete endpoint details, parameter tables, and response schemas\n\n> Generated from the official API spec by [LAP](https://lap.sh)\n","references/api-spec.lap":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api Neon API\n@base https://console.neon.tech/api/v2\n@version v2\n@auth Bearer bearer | ApiKey zenith in cookie | ApiKey keycloak_token in cookie\n@endpoints 138\n@hint download_for_search\n@toc projects(111), api_keys(3), consumption_history(3), organizations(16), regions(1), users(3), auth(1)\n\n@group projects\n@endpoint GET /projects/{project_id}/advisors\n@desc Get advisor issues\n@optional {branch_id: str # Branch ID to analyze. If not specified, the project's default branch is used., database_name: str # Database name to analyze. Required if branch has multiple databases., category: str # Filter issues by category, min_severity: str(INFO/WARN/ERROR) # Minimum severity level to include. For example, WARN returns WARN and ERROR issues, excluding INFO.}\n@returns(200) {issues: [map]} # Successfully retrieved security advisor issues\n\n@endgroup\n\n@group api_keys\n@endpoint GET /api_keys\n@desc List API keys\n@returns(200) Returned the API keys for the Neon account\n\n@endpoint POST /api_keys\n@desc Create API key\n@required {key_name: str # A user-specified API key name. This value is required when creating an API key.}\n@returns(200) {id: int(int64), key: str, name: str, created_at: str(date-time), created_by: str(uuid)} # Created an API key\n@example_request {\"key_name\":\"mykey\"}\n\n@endpoint DELETE /api_keys/{key_id}\n@desc Revoke API key\n@required {key_id: int(int64) # The API key ID}\n@returns(200) {id: int(int64), name: str, created_at: str(date-time), created_by: str(uuid), last_used_at: str(date-time)?, last_used_from_addr: str, revoked: bool} # Revoked the specified API key\n\n@endgroup\n\n@group projects\n@endpoint GET /projects/{project_id}/operations/{operation_id}\n@desc Retrieve operation details\n@returns(200) {operation: map{id: str(uuid), project_id: str, branch_id: str, endpoint_id: str, action: str, status: str, error: str, failures_count: int(int32), retry_at: str(date-time), created_at: str(date-time), updated_at: str(date-time), total_duration_ms: int(int32)}} # Returned details for the specified operation\n\n@endpoint GET /projects\n@desc List projects\n@optional {cursor: str # Specify the cursor value from the previous response to retrieve the next batch of projects., limit: int=10 # Specify a value from 1 to 400 to limit number of projects in the response., search: str # Search by project `name` or `id`. You can specify partial `name` or `id` values to filter results., org_id: str # Search for projects by `org_id`., timeout: int # Specify an explicit timeout in milliseconds to limit response delay. After timing out, the incomplete list of project data fetched so far will be returned. Projects still being fetched when the timeout occurred are listed in the \"unavailable\" attribute of the response. If not specified, an implicit implementation defined timeout is chosen with the same behaviour as above, recoverable: bool=false # Show only deleted projects within the recovery window.}\n@returns(200) Returned a list of projects for the Neon account\n\n@endpoint POST /projects\n@desc Create project\n@required {project: map{settings: map, name: str, branch: map, autoscaling_limit_min_cu: num, autoscaling_limit_max_cu: num, provisioner: str, region_id: str, default_endpoint_settings: map, pg_version: int, store_passwords: bool, history_retention_seconds: int(int32), org_id: str}}\n@returns(201) Created a project. The project includes a connection URI with a database, password, and role. At least one non-protected role is created with a password. Wait until the operations are finished before attempting to connect to a project database.\n@example_request {\"project\":{\"name\":\"myproject\"}}\n\n@endpoint GET /projects/shared\n@desc List shared projects\n@optional {cursor: str # Specify the cursor value from the previous response to get the next batch of projects., limit: int=10 # Specify a value from 1 to 400 to limit number of projects in the response., search: str # Search query by name or id., timeout: int # Specify an explicit timeout in milliseconds to limit response delay. After timing out, the incomplete list of project data fetched so far will be returned. Projects still being fetched when the timeout occurred are listed in the \"unavailable\" attribute of the response. If not specified, an implicit implementation defined timeout is chosen with the same behaviour as above}\n@returns(200) Returned a list of shared projects for the Neon account\n\n@endpoint GET /projects/{project_id}\n@desc Retrieve project details\n@returns(200) {project: map{data_storage_bytes_hour: int(int64), data_transfer_bytes: int(int64), written_data_bytes: int(int64), compute_time_seconds: int(int64), active_time_seconds: int(int64), cpu_used_sec: int(int64), id: str, platform_id: str, region_id: str, name: str, provisioner: str, default_endpoint_settings: map{pg_settings: map, pgbouncer_settings: map, autoscaling_limit_min_cu: num, autoscaling_limit_max_cu: num, suspend_timeout_seconds: int(int64)}, settings: map{quota: map{active_time_seconds: int(int64), compute_time_seconds: int(int64), written_data_bytes: int(int64), data_transfer_bytes: int(int64), logical_size_bytes: int(int64)}, allowed_ips: map{ips: [str], protected_branches_only: bool}, enable_logical_replication: bool, maintenance_window: map{weekdays: [int], start_time: str, end_time: str}, block_public_connections: bool, block_vpc_connections: bool, audit_log_level: str, hipaa: bool, preload_libraries: map{use_defaults: bool, enabled_libraries: [str]}}, pg_version: int, proxy_host: str, branch_logical_size_limit: int(int64), branch_logical_size_limit_bytes: int(int64), store_passwords: bool, maintenance_starts_at: str(date-time), creation_source: str, history_retention_seconds: int(int32), created_at: str(date-time), updated_at: str(date-time), synthetic_storage_size: int(int64), consumption_period_start: str(date-time), consumption_period_end: str(date-time), quota_reset_at: str(date-time), owner_id: str, owner: map{email: str(email), name: str, branches_limit: int, subscription_type: str}, compute_last_active_at: str(date-time), org_id: str, maintenance_scheduled_for: str(date-time), hipaa_enabled_at: str(date-time)}} # Returned information about the specified project\n\n@endpoint PATCH /projects/{project_id}\n@desc Update project\n@required {project: map{settings: map, name: str, default_endpoint_settings: map, history_retention_seconds: int(int32)}}\n@returns(200) Updated the specified project\n@example_request {\"project\":{\"name\":\"myproject\"}}\n\n@endpoint DELETE /projects/{project_id}\n@desc Delete project\n@returns(200) {project: map{data_storage_bytes_hour: int(int64), data_transfer_bytes: int(int64), written_data_bytes: int(int64), compute_time_seconds: int(int64), active_time_seconds: int(int64), cpu_used_sec: int(int64), id: str, platform_id: str, region_id: str, name: str, provisioner: str, default_endpoint_settings: map{pg_settings: map, pgbouncer_settings: map, autoscaling_limit_min_cu: num, autoscaling_limit_max_cu: num, suspend_timeout_seconds: int(int64)}, settings: map{quota: map{active_time_seconds: int(int64), compute_time_seconds: int(int64), written_data_bytes: int(int64), data_transfer_bytes: int(int64), logical_size_bytes: int(int64)}, allowed_ips: map{ips: [str], protected_branches_only: bool}, enable_logical_replication: bool, maintenance_window: map{weekdays: [int], start_time: str, end_time: str}, block_public_connections: bool, block_vpc_connections: bool, audit_log_level: str, hipaa: bool, preload_libraries: map{use_defaults: bool, enabled_libraries: [str]}}, pg_version: int, proxy_host: str, branch_logical_size_limit: int(int64), branch_logical_size_limit_bytes: int(int64), store_passwords: bool, maintenance_starts_at: str(date-time), creation_source: str, history_retention_seconds: int(int32), created_at: str(date-time), updated_at: str(date-time), synthetic_storage_size: int(int64), consumption_period_start: str(date-time), consumption_period_end: str(date-time), quota_reset_at: str(date-time), owner_id: str, owner: map{email: str(email), name: str, branches_limit: int, subscription_type: str}, compute_last_active_at: str(date-time), org_id: str, maintenance_scheduled_for: str(date-time), hipaa_enabled_at: str(date-time)}} # Deleted the specified project\n\n@endpoint POST /projects/{project_id}/restore\n@desc Restore a deleted project\n@returns(200) Returned the restored project\n\n@endpoint POST /projects/{project_id}/recover\n@desc Recover a deleted project\n@returns(200) Returned the recovered project\n\n@endpoint GET /projects/{project_id}/operations\n@desc List operations\n@required {project_id: str # The Neon project ID}\n@optional {cursor: str # Specify the cursor value from the previous response to get the next batch of operations, limit: int # Specify a value from 1 to 1000 to limit number of operations in the response}\n@returns(200) Returned a list of operations\n\n@endpoint GET /projects/{project_id}/permissions\n@desc List project access\n@returns(200) {project_permissions: [map]} # Returned project access details\n\n@endpoint POST /projects/{project_id}/permissions\n@desc Grant project access\n@required {email: str(email)}\n@returns(200) {id: str, granted_to_email: str(email), granted_at: str(date-time), revoked_at: str(date-time)} # Granted project access\n\n@endpoint DELETE /projects/{project_id}/permissions/{permission_id}\n@desc Revoke project access\n@returns(200) {id: str, granted_to_email: str(email), granted_at: str(date-time), revoked_at: str(date-time)} # Revoked project access\n\n@endpoint GET /projects/{project_id}/available_preload_libraries\n@desc Return available shared preload libraries\n@required {project_id: str}\n@returns(200) {libraries: [map]} # Successfully returned available shared preload libraries\n\n@endpoint POST /projects/{project_id}/transfer_requests\n@desc Create a project transfer request\n@optional {ttl_seconds: int(int64) # Specifies the validity duration of the transfer request in seconds. If not provided, the request will expire after 24 hours (86,400 seconds).}\n@returns(201) {id: str(uuid), project_id: str, created_at: str(date-time), expires_at: str(date-time)} # Project transfer request created successfully\n\n@endpoint PUT /projects/{project_id}/transfer_requests/{request_id}\n@desc Accept a project transfer request\n@optional {org_id: str # The Neon organization ID to transfer the project to. If not provided, the project will be transferred to the current user or organization account.}\n@returns(204) Project transfer request accepted successfully\n@errors {406: Account doesn't satisfy the plan requirements to own the project}\n\n@endpoint GET /projects/{project_id}/jwks\n@desc List JWKS URLs\n@returns(200) {jwks: [map]} # The JWKS URLs available for the project\n\n@endpoint POST /projects/{project_id}/jwks\n@desc Add JWKS URL\n@required {jwks_url: str # The URL that lists the JWKS, provider_name: str # The name of the authentication provider (e.g., Clerk, Stytch, Auth0)}\n@optional {branch_id: str # Branch ID, jwt_audience: str # The name of the required JWT Audience to be used, role_names: [str] # DEPRECATED. This field should only be used when using Neon RLS. The roles the JWKS should be mapped to. By default, the JWKS is mapped to the `authenticator`, `authenticated` and `anonymous` roles., skip_role_creation: bool=false # DEPRECATED. This field should only be used when using Neon RLS. If true, the role creation will be skipped.}\n@returns(201) The JWKS URL was added to the project's authentication connections\n\n@endpoint DELETE /projects/{project_id}/jwks/{jwks_id}\n@desc Delete JWKS URL\n@returns(200) {id: str, project_id: str, branch_id: str, jwks_url: str, provider_name: str, created_at: str(date-time), updated_at: str(date-time), jwt_audience: str, role_names: [str]} # Deleted a JWKS URL from the project\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n@desc Create Neon Data API\n@optional {auth_provider: str(neon_auth/external) # The authentication provider to use for the Neon Data API, jwks_url: str(uri) # The URL that lists the JWKS, provider_name: str # The name of the authentication provider (e.g., Clerk, Stytch, Auth0), jwt_audience: str # WARNING - using this setting will only reject tokens with a different audience claim. Tokens without audience claim will still be accepted., add_default_grants: bool=false # Grant all permissions to the tables in the public schema to authenticated users, skip_auth_schema: bool=false # Skip creating the auth schema and RLS functions, settings: map{db_aggregates_enabled: bool, db_anon_role: str, db_extra_search_path: str, db_max_rows: int, db_schemas: [str], jwt_role_claim_key: str, jwt_cache_max_lifetime: int, openapi_mode: str, server_cors_allowed_origins: str, server_timing_enabled: bool} # Configuration settings for the Neon Data API}\n@returns(201) {url: str(uri)} # Creates a new app\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n@desc Update Neon Data API\n@optional {settings: map{db_aggregates_enabled: bool, db_anon_role: str, db_extra_search_path: str, db_max_rows: int, db_schemas: [str], jwt_role_claim_key: str, jwt_cache_max_lifetime: int, openapi_mode: str, server_cors_allowed_origins: str, server_timing_enabled: bool} # Configuration settings for the Neon Data API}\n@returns(201) Updated the Neon Data API configuration and refreshed the schema cache\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n@desc Delete Neon Data API\n@returns(200) Deleted the Neon Data API for the specified branch\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/data-api/{database_name}\n@desc Get Neon Data API\n@returns(200) {url: str(uri), status: str, settings: map?, available_schemas: [str]?} # Returns the Neon Data API for the specified branch\n\n@endpoint POST /projects/auth/create\n@desc Create Neon Auth integration\n@required {auth_provider: str(mock/stack/stack_v2/better_auth), project_id: str, branch_id: str}\n@optional {database_name: str, role_name: str}\n@returns(201) {auth_provider: str, auth_provider_project_id: str, pub_client_key: str, secret_server_key: str, jwks_url: str, schema_name: str, table_name: str, base_url: str} # Creates Neon Auth integration\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth\n@desc Get details of Neon Auth for the branch\n@returns(200) {auth_provider: str, auth_provider_project_id: str, branch_id: str, db_name: str, created_at: str(date-time), owned_by: str, transfer_status: str, jwks_url: str, base_url: str} # Fetched the details of the Neon Auth integration for the specified branch\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/auth\n@desc Enable Neon Auth for the branch\n@required {auth_provider: str(mock/stack/stack_v2/better_auth)}\n@optional {database_name: str}\n@returns(201) {auth_provider: str, auth_provider_project_id: str, pub_client_key: str, secret_server_key: str, jwks_url: str, schema_name: str, table_name: str, base_url: str} # Enables Neon Auth integration for the branch\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/auth\n@desc Disables Neon Auth for the branch\n@optional {delete_data: bool=false # If true, deletes the `neon_auth` schema from the database}\n@returns(200) Delete the integration with the authentication provider\n\n@endpoint GET /projects/{project_id}/auth/domains\n@desc List domains in redirect_uri whitelist\n@returns(200) {domains: [map]} # Returned the domains in the redirect_uri whitelist\n\n@endpoint POST /projects/{project_id}/auth/domains\n@desc Add domain to redirect_uri whitelist\n@required {domain: str(uri), auth_provider: str(mock/stack/stack_v2/better_auth)}\n@returns(201) Added the domain to the redirect_uri whitelist\n\n@endpoint DELETE /projects/{project_id}/auth/domains\n@desc Delete domain from redirect_uri whitelist\n@required {auth_provider: str(mock/stack/stack_v2/better_auth), domains: [map{domain!: str(uri)}]}\n@returns(200) Deleted the domain from the redirect_uri whitelist\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/domains\n@desc List domains in redirect_uri whitelist\n@returns(200) {domains: [map]} # Returned the domains in the redirect_uri whitelist\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/auth/domains\n@desc Add domain to redirect_uri whitelist\n@required {domain: str(uri), auth_provider: str(mock/stack/stack_v2/better_auth)}\n@returns(201) Added the domain to the redirect_uri whitelist\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/auth/domains\n@desc Delete domain from redirect_uri whitelist\n@required {auth_provider: str(mock/stack/stack_v2/better_auth), domains: [map{domain!: str(uri)}]}\n@returns(200) Deleted the domain from the redirect_uri whitelist\n\n@endpoint POST /projects/auth/keys\n@desc Create Auth Provider SDK keys\n@required {project_id: str, auth_provider: str(mock/stack/stack_v2/better_auth)}\n@returns(201) {auth_provider: str, auth_provider_project_id: str, pub_client_key: str, secret_server_key: str, jwks_url: str, schema_name: str, table_name: str, base_url: str} # Creates Auth Provider SDK keys\n\n@endpoint POST /projects/auth/user\n@desc Create new auth user\n@required {project_id: str, auth_provider: str(mock/stack/stack_v2/better_auth), email: str(email)}\n@optional {name: str}\n@returns(201) {id: str} # Creates new user\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/auth/users\n@desc Create new auth user\n@required {email: str(email)}\n@optional {name: str}\n@returns(201) {id: str} # Creates new user\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/auth/users/{auth_user_id}\n@desc Delete auth user\n@returns(204) Deleted the auth user\n\n@endpoint PUT /projects/{project_id}/branches/{branch_id}/auth/users/{auth_user_id}/role\n@desc Update auth user role\n@required {roles: [str] # Array of roles to assign to the user}\n@returns(200) {id: str} # Updated the auth user role\n\n@endpoint DELETE /projects/{project_id}/auth/users/{auth_user_id}\n@desc Delete auth user\n@required {project_id: str # The Neon project ID, auth_user_id: str # The Neon user ID}\n@returns(204) Deleted the auth user\n\n@endpoint POST /projects/auth/transfer_ownership\n@desc Transfer Neon-managed auth project to your own account\n@required {project_id: str, auth_provider: str(mock/stack/stack_v2/better_auth)}\n@returns(200) {url: str} # Transfer initiated. Follow the URL to complete the process in your auth provider's UI.\n\n@endpoint GET /projects/{project_id}/auth/integrations\n@desc Lists active integrations with auth providers\n@required {project_id: str # The Neon project ID}\n@returns(200) {data: [map]} # Return management API keys metadata\n\n@endpoint GET /projects/{project_id}/auth/oauth_providers\n@desc List OAuth providers\n@returns(200) {providers: [map]} # Returns the OAuth providers for the Neon Auth\n\n@endpoint POST /projects/{project_id}/auth/oauth_providers\n@desc Add a OAuth provider\n@required {id: str(google/github/microsoft/vercel)}\n@optional {client_id: str, client_secret: str, microsoft_tenant_id: str}\n@returns(200) {id: str, type: str, client_id: str, client_secret: str} # The OAuth provider has been added to the project\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/oauth_providers\n@desc List OAuth providers for neon auth for a branch\n@returns(200) {providers: [map]} # Returns the OAuth providers for the Neon Auth\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/auth/oauth_providers\n@desc Add a OAuth provider\n@required {id: str(google/github/microsoft/vercel)}\n@optional {client_id: str, client_secret: str, microsoft_tenant_id: str}\n@returns(200) {id: str, type: str, client_id: str, client_secret: str} # The OAuth provider has been added to the project\n\n@endpoint PATCH /projects/{project_id}/auth/oauth_providers/{oauth_provider_id}\n@desc Update OAuth provider\n@optional {client_id: str, client_secret: str, microsoft_tenant_id: str}\n@returns(200) {id: str, type: str, client_id: str, client_secret: str} # The OAuth provider has been added to the project\n\n@endpoint DELETE /projects/{project_id}/auth/oauth_providers/{oauth_provider_id}\n@desc Delete OAuth provider\n@returns(200) Deleted the OAuth provider from the project\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/auth/oauth_providers/{oauth_provider_id}\n@desc Update OAuth provider\n@optional {client_id: str, client_secret: str, microsoft_tenant_id: str}\n@returns(200) {id: str, type: str, client_id: str, client_secret: str} # The OAuth provider has been added to the project\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/auth/oauth_providers/{oauth_provider_id}\n@desc Delete OAuth provider\n@returns(200) Deleted the OAuth provider from the project\n\n@endpoint GET /projects/{project_id}/auth/email_server\n@desc Get email server configuration\n@returns(200) Returns the email server configuration for the Neon Auth\n\n@endpoint PATCH /projects/{project_id}/auth/email_server\n@desc Update email server configuration\n@returns(200) The OAuth provider has been added to the project\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/auth/send_test_email\n@desc Send test email\n@returns(200) {success: bool, error_message: str} # Response with the result of the test email send\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/email_and_password\n@desc Get email and password configuration\n@returns(200) {enabled: bool, email_verification_method: str, require_email_verification: bool, auto_sign_in_after_verification: bool, send_verification_email_on_sign_up: bool, send_verification_email_on_sign_in: bool, disable_sign_up: bool} # Returns the email and password configuration for Neon Auth\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/auth/email_and_password\n@desc Update email and password configuration\n@optional {enabled: bool # Whether email and password authentication is enabled, email_verification_method: str(link/otp) # The email verification method to use. - `link`: Sends a verification link via email - `otp`: Sends a one-time password (OTP) via email, require_email_verification: bool # Whether email verification is required before users can sign in, auto_sign_in_after_verification: bool # Whether users are automatically signed in after verifying their email, send_verification_email_on_sign_up: bool # Whether to send a verification email when users sign up, send_verification_email_on_sign_in: bool # Whether to send a verification email when users sign in, disable_sign_up: bool # Whether to disable new user sign ups}\n@returns(200) {enabled: bool, email_verification_method: str, require_email_verification: bool, auto_sign_in_after_verification: bool, send_verification_email_on_sign_up: bool, send_verification_email_on_sign_in: bool, disable_sign_up: bool} # The email and password configuration has been updated\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/email_provider\n@desc Get email provider configuration\n@returns(200) Returns the email provider configuration for the Neon Auth\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/auth/email_provider\n@desc Update email provider configuration\n@returns(200) The email provider configuration has been updated\n\n@endpoint DELETE /projects/{project_id}/auth/integration/{auth_provider}\n@desc Delete integration with auth provider\n@required {project_id: str # The Neon project ID, auth_provider: str # The authentication provider name}\n@optional {delete_data: bool=false # If true, deletes the `neon_auth` schema from the database}\n@returns(200) Delete the integration with the authentication provider\n\n@endpoint GET /projects/{project_id}/connection_uri\n@desc Retrieve connection URI\n@required {project_id: str # The Neon project ID, database_name: str # The database name, role_name: str # The role name}\n@optional {branch_id: str # The branch ID. Defaults to your project's default `branch_id` if not specified., endpoint_id: str # The endpoint ID. Defaults to the read-write `endpoint_id` associated with the `branch_id` if not specified., pooled: bool # Adds the `-pooler` option to the connection URI when set to `true`, creating a pooled connection URI.}\n@returns(200) {uri: str} # Returned the connection URI\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/allow_localhost\n@desc Get allow localhost\n@returns(200) {allow_localhost: bool} # The allow localhost configuration\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/auth/allow_localhost\n@desc Update allow localhost\n@required {allow_localhost: bool # Whether to allow localhost connections}\n@returns(200) {allow_localhost: bool} # Updated the allow localhost configuration\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/plugins\n@desc Get all plugin configurations\n@returns(200) {organization: map{enabled: bool, organization_limit: int(int32), membership_limit: int(int32), creator_role: str, send_invitation_email: bool}, email_provider: map, email_and_password: map{enabled: bool, email_verification_method: str, require_email_verification: bool, auto_sign_in_after_verification: bool, send_verification_email_on_sign_up: bool, send_verification_email_on_sign_in: bool, disable_sign_up: bool}, oauth_providers: [map], allow_localhost: bool} # Returns all plugin configurations\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/auth/plugins/organization\n@desc Update organization plugin configuration\n@optional {enabled: bool # Whether the organization plugin is enabled, organization_limit: int(int32) # Maximum number of organizations a user can create, membership_limit: int(int32) # Maximum number of members per organization, creator_role: str(admin/owner) # The role assigned to the user who creates an organization, send_invitation_email: bool # Whether to send invitation emails when inviting members to an organization}\n@returns(200) {enabled: bool, organization_limit: int(int32), membership_limit: int(int32), creator_role: str, send_invitation_email: bool} # The organization plugin configuration has been updated\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/auth/webhooks\n@desc Get webhook configuration for Neon Auth\n@returns(200) {enabled: bool, webhook_url: str, enabled_events: [str], timeout_seconds: int} # Returns webhook configuration for Neon Auth\n\n@endpoint PUT /projects/{project_id}/branches/{branch_id}/auth/webhooks\n@desc Update webhook configuration for Neon Auth\n@required {enabled: bool}\n@optional {webhook_url: str, enabled_events: [str], timeout_seconds: int=5}\n@returns(200) {enabled: bool, webhook_url: str, enabled_events: [str], timeout_seconds: int} # Returns the updated webhook configuration\n\n@endpoint POST /projects/{project_id}/branches\n@desc Create branch\n@returns(201) Created a branch. An endpoint is only created if it was specified in the request.\n@example_request {\"branch\":{\"parent_id\":\"br-aged-salad-637688\",\"name\":\"mybranch\"}}\n\n@endpoint GET /projects/{project_id}/branches\n@desc List branches\n@optional {search: str # Search by branch `name` or `id`. You can specify partial `name` or `id` values to filter results., sort_by: str(name/created_at/updated_at)=updated_at # Sort the branches by sort_field. If not provided, branches will be sorted by updated_at descending order, cursor: str # A cursor to use in pagination. A cursor defines your place in the data list. Include `response.pagination.next` in subsequent API calls to fetch next page of the list., sort_order: str(asc/desc)=desc # Defines the sorting order of entities., limit: int # The maximum number of records to be returned in the response}\n@returns(200) Returned a list of branches for the specified project\n\n@endpoint POST /projects/{project_id}/branch_anonymized\n@desc Create anonymized branch\n@returns(201) Created a branch. An endpoint is only created if it was specified in the request.\n\n@endpoint GET /projects/{project_id}/branches/count\n@desc Retrieve number of branches\n@optional {search: str # Count branches matching the `name` in search query}\n@returns(200) Returned a count of branches for the specified project\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}\n@desc Retrieve branch details\n@returns(200) Returned information about the specified branch\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}\n@desc Delete branch\n@returns(200) Deleted the specified branch\n@returns(204) Returned if the branch doesn't exist or has already been deleted\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}\n@desc Update branch\n@required {branch: map{name: str, protected: bool, expires_at: str(date-time)}}\n@returns(200) Updated the specified branch\n@example_request {\"branch\":{\"name\":\"mybranch\"}}\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/restore\n@desc Restore branch\n@required {project_id: str # The Neon project ID, branch_id: str # The branch ID, source_branch_id: str # The `branch_id` of the restore source branch. If `source_timestamp` and `source_lsn` are omitted, the branch will be restored to head. If `source_branch_id` is equal to the branch's id, `source_timestamp` or `source_lsn` is required.}\n@optional {source_lsn: str # A Log Sequence Number (LSN) on the source branch. The branch will be restored with data from this LSN., source_timestamp: str(date-time) # A timestamp identifying a point in time on the source branch. The branch will be restored with data starting from this point in time. The timestamp must be provided in ISO 8601 format; for example: `2024-02-26T12:00:00Z`., preserve_under_name: str # If not empty, the previous state of the branch will be saved to a branch with this name. If the branch has children or the `source_branch_id` is equal to the branch id, this field is required. All existing child branches will be moved to the newly created branch under the name `preserve_under_name`.}\n@returns(200) Updated the specified branch\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/schema\n@desc Retrieve database schema\n@required {project_id: str # The Neon project ID, branch_id: str # The branch ID, db_name: str # Name of the database for which the schema is retrieved}\n@optional {lsn: str # The Log Sequence Number (LSN) for which the schema is retrieved, timestamp: str(date-time) # The point in time for which the schema is retrieved, format: str # The format of the schema to retrieve. Possible values: - `sql` (default) - `json`}\n@returns(200) {sql: str, json: map{tables: [map]}} # Schema definition\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/compare_schema\n@desc Compare database schema\n@required {project_id: str # The Neon project ID, branch_id: str # The branch ID, db_name: str # Name of the database for which the schema is retrieved}\n@optional {base_branch_id: str # The branch ID to compare the schema with, lsn: str # The Log Sequence Number (LSN) for which the schema is retrieved, timestamp: str(date-time) # The point in time for which the schema is retrieved, base_lsn: str # The Log Sequence Number (LSN) for the base branch schema, base_timestamp: str(date-time) # The point in time for the base branch schema}\n@returns(200) {diff: str} # Difference between the schemas\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/masking_rules\n@desc Get masking rules\n@returns(200) {masking_rules: [map]} # Masking rules retrieved successfully\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/masking_rules\n@desc Update masking rules\n@required {masking_rules: [map{database_name!: str, schema_name!: str, table_name!: str, column_name!: str, masking_function: str, masking_value: str}] # List of masking rules to apply to the branch. This will replace all existing masking rules for the branch.}\n@returns(200) {masking_rules: [map]} # Masking rules updated successfully\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/anonymized_status\n@desc Get anonymized branch status\n@returns(200) {project_id: str, branch_id: str, state: str, status_message: str, created_at: str(date-time), updated_at: str(date-time), failed_at: str(date-time), last_run: map{started_at: str(date-time), completed_at: str(date-time), triggered_by: str(uuid), triggered_by_username: str, masked_columns: int}} # Anonymized branch status retrieved successfully\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/anonymize\n@desc Start anonymization\n@returns(200) {project_id: str, branch_id: str, state: str, status_message: str, created_at: str(date-time), updated_at: str(date-time), failed_at: str(date-time), last_run: map{started_at: str(date-time), completed_at: str(date-time), triggered_by: str(uuid), triggered_by_username: str, masked_columns: int}} # Anonymization started successfully\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/set_as_default\n@desc Set branch as default\n@returns(200) Updated the specified branch\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/finalize_restore\n@desc Finalize restore\n@optional {name: str # used to rename the existing branch when it is replaced. if omitted, a default name is generated and used}\n@returns(200) {operations: [map]} # OK\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/endpoints\n@desc List branch endpoints\n@returns(200) {endpoints: [map]} # Returned a list of endpoints for the specified branch\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/databases\n@desc List databases\n@returns(200) {databases: [map]} # Returned a list of databases of the specified branch\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/databases\n@desc Create database\n@required {database: map{name!: str, owner_name!: str}}\n@returns(201) Created a database in the specified branch\n@example_request {\"database\":{\"name\":\"mydb\",\"owner_name\":\"casey\"}}\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/databases/{database_name}\n@desc Retrieve database details\n@returns(200) {database: map{id: int(int64), branch_id: str, name: str, owner_name: str, created_at: str(date-time), updated_at: str(date-time)}} # Returned the database details\n\n@endpoint PATCH /projects/{project_id}/branches/{branch_id}/databases/{database_name}\n@desc Update database\n@required {database: map{name: str, owner_name: str}}\n@returns(200) Updated the database\n@example_request {\"database\":{\"name\":\"mydb\",\"owner_name\":\"sally\"}}\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/databases/{database_name}\n@desc Delete database\n@returns(200) Deleted the specified database\n@returns(204) Returned if the database doesn't exist or has already been deleted\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/roles\n@desc List roles\n@returns(200) {roles: [map]} # Returned a list of roles from the specified branch.\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/roles\n@desc Create role\n@required {role: map{name!: str, no_login: bool}}\n@returns(201) Created a role in the specified branch\n@example_request {\"role\":{\"name\":\"sally\"}}\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/roles/{role_name}\n@desc Retrieve role details\n@returns(200) {role: map{branch_id: str, name: str, password: str, protected: bool, authentication_method: str, created_at: str(date-time), updated_at: str(date-time)}} # Returned details for the specified role\n\n@endpoint DELETE /projects/{project_id}/branches/{branch_id}/roles/{role_name}\n@desc Delete role\n@returns(200) Deleted the specified role from the branch\n@returns(204) Returned if the role doesn't exist or has already been deleted\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/roles/{role_name}/reveal_password\n@desc Retrieve role password\n@returns(200) {password: str} # Returned password for the specified role\n@errors {404: Role not found, 412: Storing passwords is disabled}\n\n@endpoint POST /projects/{project_id}/branches/{branch_id}/roles/{role_name}/reset_password\n@desc Reset role password\n@returns(200) Reset the password for the specified role\n\n@endpoint GET /projects/{project_id}/vpc_endpoints\n@desc List VPC endpoint restrictions\n@returns(200) {endpoints: [map]} # Returned VPC endpoint restrictions for the specified project\n\n@endpoint POST /projects/{project_id}/vpc_endpoints/{vpc_endpoint_id}\n@desc Set VPC endpoint restriction\n@required {label: str}\n@returns(200) Configured the specified VPC endpoint as a restriction for the specified project.\n\n@endpoint DELETE /projects/{project_id}/vpc_endpoints/{vpc_endpoint_id}\n@desc Delete VPC endpoint restriction\n@returns(200) Removed the VPC endpoint restriction from the specified Neon project\n\n@endpoint POST /projects/{project_id}/endpoints\n@desc Create compute endpoint\n@required {endpoint: map{branch_id!: str, region_id: str, type!: str, settings: map, autoscaling_limit_min_cu: num, autoscaling_limit_max_cu: num, provisioner: str, pooler_enabled: bool, pooler_mode: str, disabled: bool, passwordless_access: bool, suspend_timeout_seconds: int(int64), name: str}}\n@returns(201) Created a compute endpoint\n@example_request {\"endpoint\":{\"branch_id\":\"br-floral-mountain-251143\",\"type\":\"read_write\"}}\n\n@endpoint GET /projects/{project_id}/endpoints\n@desc List compute endpoints\n@returns(200) {endpoints: [map]} # Returned a list of endpoints for the specified project\n\n@endpoint GET /projects/{project_id}/endpoints/{endpoint_id}\n@desc Retrieve compute endpoint details\n@returns(200) {endpoint: map{host: str, id: str, name: str, project_id: str, branch_id: str, autoscaling_limit_min_cu: num, autoscaling_limit_max_cu: num, region_id: str, type: str, current_state: str, pending_state: str, settings: map{pg_settings: map, pgbouncer_settings: map, preload_libraries: map{use_defaults: bool, enabled_libraries: [str]}}, pooler_enabled: bool, pooler_mode: str, disabled: bool, passwordless_access: bool, last_active: str(date-time), creation_source: str, created_at: str(date-time), updated_at: str(date-time), started_at: str(date-time), suspended_at: str(date-time), proxy_host: str, suspend_timeout_seconds: int(int64), provisioner: str, compute_release_version: str}} # Returned information about the specified endpoint\n\n@endpoint DELETE /projects/{project_id}/endpoints/{endpoint_id}\n@desc Delete compute endpoint\n@returns(200) Deleted the specified compute endpoint\n@returns(204) Returned if the endpoint doesn't exist or has already been deleted\n\n@endpoint PATCH /projects/{project_id}/endpoints/{endpoint_id}\n@desc Update compute endpoint\n@required {endpoint: map{branch_id: str, autoscaling_limit_min_cu: num, autoscaling_limit_max_cu: num, provisioner: str, settings: map, pooler_enabled: bool, pooler_mode: str, disabled: bool, passwordless_access: bool, suspend_timeout_seconds: int(int64), name: str}}\n@returns(200) Updated the specified compute endpoint\n@example_request {\"endpoint\":{\"suspend_timeout_seconds\":300}}\n\n@endpoint POST /projects/{project_id}/endpoints/{endpoint_id}/start\n@desc Start compute endpoint\n@required {project_id: str # The Neon project ID, endpoint_id: str # The endpoint ID}\n@returns(200) Started the specified compute endpoint\n\n@endpoint POST /projects/{project_id}/endpoints/{endpoint_id}/suspend\n@desc Suspend compute endpoint\n@returns(200) Suspended the specified endpoint\n\n@endpoint POST /projects/{project_id}/endpoints/{endpoint_id}/restart\n@desc Restart compute endpoint\n@returns(200) Restarted endpoint\n\n@endgroup\n\n@group consumption_history\n@endpoint GET /consumption_history/account\n@desc Retrieve account consumption metrics (legacy plans)\n@required {from: str(date-time) # Specify the start `date-time` for the consumption period. The `date-time` value is rounded according to the specified `granularity`. For example, `2024-03-15T15:30:00Z` for `daily` granularity will be rounded to `2024-03-15T00:00:00Z`. The specified `date-time` value must respect the specified granularity: - For `hourly`, consumption metrics are limited to the last 168 hours. - For `daily`, consumption metrics are limited to the last 60 days. - For `monthly`, consumption metrics are limited to the past year.  The consumption history is available starting from `March 1, 2024, at 00:00:00 UTC`., to: str(date-time) # Specify the end `date-time` for the consumption period. The `date-time` value is rounded according to the specified granularity. For example, `2024-03-15T15:30:00Z` for `daily` granularity will be rounded to `2024-03-15T00:00:00Z`. The specified `date-time` value must respect the specified granularity: - For `hourly`, consumption metrics are limited to the last 168 hours. - For `daily`, consumption metrics are limited to the last 60 days. - For `monthly`, consumption metrics are limited to the past year., granularity: str # Specify the granularity of consumption metrics. Hourly, daily, and monthly metrics are available for the last 168 hours, 60 days, and 1 year, respectively.}\n@optional {org_id: str # Specify the organization for which the consumption metrics should be returned. If this parameter is not provided, the endpoint will return the metrics for the authenticated user's account., include_v1_metrics: bool # The field is deprecated. Please use `metrics` instead. If `metrics` is specified, this field is ignored. Include metrics utilized in previous pricing models. - **data_storage_bytes_hour**: The sum of the maximum observed storage values for each hour   for each project, which never decreases., metrics: [str] # Specify a list of metrics to include in the response. If omitted, active_time, compute_time, written_data, synthetic_storage_size are returned. Possible values: - `active_time_seconds` - `compute_time_seconds` - `written_data_bytes` - `synthetic_storage_size_bytes` - `data_storage_bytes_hour`  A list of metrics can be specified as an array of parameter values or as a comma-separated list in a single parameter value. - As an array of parameter values: `metrics=cpu_seconds&metrics=ram_bytes` - As a comma-separated list in a single parameter value: `metrics=cpu_seconds,ram_bytes`}\n@returns(200) {periods: [map]} # Returned consumption metrics for the Neon account\n@errors {403: This endpoint is not available. It is only supported for Scale, Business, and Enterprise plan accounts., 404: Account is not a member of the organization specified by `org_id`., 406: The specified `date-time` range is outside the boundaries of the specified `granularity`. Adjust your `from` and `to` values or select a different `granularity`., 429: Too many requests}\n\n@endpoint GET /consumption_history/projects\n@desc Retrieve project consumption metrics (legacy plans)\n@required {from: str(date-time) # Specify the start `date-time` for the consumption period. The `date-time` value is rounded according to the specified `granularity`. For example, `2024-03-15T15:30:00Z` for `daily` granularity will be rounded to `2024-03-15T00:00:00Z`. The specified `date-time` value must respect the specified `granularity`: - For `hourly`, consumption metrics are limited to the last 168 hours. - For `daily`, consumption metrics are limited to the last 60 days. - For `monthly`, consumption metrics are limited to the last year.  The consumption history is available starting from `March 1, 2024, at 00:00:00 UTC`., to: str(date-time) # Specify the end `date-time` for the consumption period. The `date-time` value is rounded according to the specified granularity. For example, `2024-03-15T15:30:00Z` for `daily` granularity will be rounded to `2024-03-15T00:00:00Z`. The specified `date-time` value must respect the specified `granularity`: - For `hourly`, consumption metrics are limited to the last 168 hours. - For `daily`, consumption metrics are limited to the last 60 days. - For `monthly`, consumption metrics are limited to the last year., granularity: str # Specify the granularity of consumption metrics. Hourly, daily, and monthly metrics are available for the last 168 hours, 60 days, and 1 year, respectively.}\n@optional {cursor: str # Specify the cursor value from the previous response to get the next batch of projects., limit: int=10 # Specify a value from 1 to 100 to limit number of projects in the response., project_ids: [str] # Specify a list of project IDs to filter the response. If omitted, the response will contain all projects. A list of project IDs can be specified as an array of parameter values or as a comma-separated list in a single parameter value. - As an array of parameter values: `project_ids=cold-poetry-09157238%20&project_ids=quiet-snow-71788278` - As a comma-separated list in a single parameter value: `project_ids=cold-poetry-09157238,quiet-snow-71788278`, org_id: str # Specify the organization for which the project consumption metrics should be returned. If this parameter is not provided, the endpoint will return the metrics for the authenticated user's projects., include_v1_metrics: bool # The field is deprecated. Please use `metrics` instead. If `metrics` is specified, this field is ignored. Include metrics utilized in previous pricing models. - **data_storage_bytes_hour**: The sum of the maximum observed storage values for each hour,   which never decreases., metrics: [str] # Specify a list of metrics to include in the response. If omitted, active_time, compute_time, written_data, synthetic_storage_size are returned. Possible values: - `active_time_seconds` - `compute_time_seconds` - `written_data_bytes` - `synthetic_storage_size_bytes` - `data_storage_bytes_hour` - `logical_size_bytes` - `logical_size_bytes_hour`  A list of metrics can be specified as an array of parameter values or as a comma-separated list in a single parameter value. - As an array of parameter values: `metrics=cpu_seconds&metrics=ram_bytes` - As a comma-separated list in a single parameter value: `metrics=cpu_seconds,ram_bytes`}\n@returns(200) Returned project consumption metrics for the Neon account\n@errors {403: This endpoint is not available. It is only supported with Scale, Business, and Enterprise plan accounts., 404: Account is not a member of the organization specified by `org_id`., 406: The specified `date-time` range is outside the boundaries of the specified `granularity`. Adjust your `from` and `to` values or select a different `granularity`., 429: Too many requests}\n\n@endpoint GET /consumption_history/v2/projects\n@desc Retrieve project consumption metrics\n@required {from: str(date-time) # Specify the start `date-time` for the consumption period. The `date-time` value is rounded according to the specified `granularity`. For example, `2024-03-15T15:30:00Z` for `daily` granularity will be rounded to `2024-03-15T00:00:00Z`. The specified `date-time` value must respect the specified `granularity`: - For `hourly`, consumption metrics are limited to the last 168 hours. - For `daily`, consumption metrics are limited to the last 60 days. - For `monthly`, consumption metrics are limited to the last year.  The consumption history is available starting from `March 1, 2024, at 00:00:00 UTC`., to: str(date-time) # Specify the end `date-time` for the consumption period. The `date-time` value is rounded according to the specified granularity. For example, `2024-03-15T15:30:00Z` for `daily` granularity will be rounded to `2024-03-15T00:00:00Z`. The specified `date-time` value must respect the specified `granularity`: - For `hourly`, consumption metrics are limited to the last 168 hours. - For `daily`, consumption metrics are limited to the last 60 days. - For `monthly`, consumption metrics are limited to the last year., granularity: str # Specify the granularity of consumption metrics. Hourly, daily, and monthly metrics are available for the last 168 hours, 60 days, and 1 year, respectively., org_id: str # Specify the organization for which the project consumption metrics should be returned. If this parameter is not provided, the endpoint will return the metrics for the authenticated user's projects., metrics: [str] # Specify a list of metrics to include in the response. Possible values: - `compute_unit_seconds` - `root_branch_bytes_month` - `child_branch_bytes_month` - `instant_restore_bytes_month` - `public_network_transfer_bytes` - `private_network_transfer_bytes` - `extra_branches_month`  A list of metrics can be specified as an array of parameter values or as a comma-separated list in a single parameter value. - As an array of parameter values: `metrics=compute_unit_seconds&metrics=extra_branches_month` - As a comma-separated list in a single parameter value: `metrics=compute_unit_seconds,extra_branches_month`}\n@optional {cursor: str # Specify the cursor value from the previous response to get the next batch of projects., limit: int=10 # Specify a value from 1 to 100 to limit number of projects in the response., project_ids: [str] # Specify a list of project IDs to filter the response. If omitted, the response will contain all projects. A list of project IDs can be specified as an array of parameter values or as a comma-separated list in a single parameter value. - As an array of parameter values: `project_ids=cold-poetry-09157238%20&project_ids=quiet-snow-71788278` - As a comma-separated list in a single parameter value: `project_ids=cold-poetry-09157238,quiet-snow-71788278`}\n@returns(200) Returned project consumption metrics for the Neon account.\n@errors {403: This endpoint is not available. It is only supported with Launch, Scale, Business, and Enterprise plan accounts., 404: Account is not a member of the organization specified by `org_id`., 406: The specified `date-time` range is outside the boundaries of the specified `granularity`. Adjust your `from` and `to` values or select a different `granularity`., 429: Too many requests}\n\n@endgroup\n\n@group organizations\n@endpoint GET /organizations/{org_id}\n@desc Retrieve organization details\n@returns(200) {id: str, name: str, handle: str, plan: str, created_at: str(date-time), managed_by: str, updated_at: str(date-time), allow_hipaa_projects: bool} # Returned information about the organization\n\n@endpoint GET /organizations/{org_id}/api_keys\n@desc List organization API keys\n@returns(200) Returned the API keys for the specified organization\n\n@endpoint POST /organizations/{org_id}/api_keys\n@desc Create organization API key\n@returns(200) Created an organization API key\n@example_request {\"key_name\":\"orgkey\"}\n\n@endpoint DELETE /organizations/{org_id}/api_keys/{key_id}\n@desc Revoke organization API key\n@required {key_id: int(int64) # The API key ID}\n@returns(200) Revoked the specified organization API key\n\n@endpoint GET /organizations/{org_id}/members\n@desc Retrieve organization members details\n@optional {sort_by: str(email/role/joined_at)=joined_at # Sort the members by the specified field. Defaults to `joined_at`., cursor: str # A cursor to use in pagination. A cursor defines your place in the data list. Include `response.pagination.next` in subsequent API calls to fetch next page of the list., sort_order: str(asc/desc)=desc # Defines the sorting order of entities., limit: int # The maximum number of members to return in the response}\n@returns(200) Returned information about organization members\n\n@endpoint GET /organizations/{org_id}/members/{member_id}\n@desc Retrieve organization member details\n@returns(200) {id: str(uuid), user_id: str(uuid), org_id: str, role: str, joined_at: str(date-time)} # Returned information about the organization member\n\n@endpoint PATCH /organizations/{org_id}/members/{member_id}\n@desc Update role for organization member\n@required {role: str(admin/member) # The role of the organization member}\n@returns(200) {id: str(uuid), user_id: str(uuid), org_id: str, role: str, joined_at: str(date-time)} # The updated organization member\n@example_request {\"role\":\"admin\"}\n\n@endpoint DELETE /organizations/{org_id}/members/{member_id}\n@desc Remove member from the organization\n@returns(200) Removed organization member\n\n@endpoint GET /organizations/{org_id}/invitations\n@desc Retrieve organization invitation details\n@returns(200) {invitations: [map]} # Returned information about the organization invitations\n\n@endpoint POST /organizations/{org_id}/invitations\n@desc Create organization invitations\n@required {invitations: [map{email!: str(email), role!: str}]}\n@returns(200) {invitations: [map]} # The created organization invitation\n@example_request {\"invitations\":[{\"email\":\"invited-user@email.com\",\"role\":\"member\"}]}\n\n@endpoint POST /organizations/{source_org_id}/projects/transfer\n@desc Transfer projects between organizations\n@required {destination_org_id: str # The destination organization identifier, project_ids: [str] # The list of projects ids to transfer. Maximum of 400 project ids}\n@returns(200) Projects successfully transferred from organization to organization\n@errors {406: Transfer failed - the target organization has too many projects or its plan is incompatible with the source organization. Reduce projects or upgrade the organization., 422: One or more of the provided project IDs have GitHub or Vercel integrations installed. Transferring integration projects is currently not supported}\n\n@endpoint GET /organizations/{org_id}/vpc/vpc_endpoints\n@desc List VPC endpoints across all regions\n@returns(200) {endpoints: [any]} # The list of configured VPC endpoint IDs for the specified organization across all regions\n\n@endpoint GET /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints\n@desc List VPC endpoints\n@returns(200) {endpoints: [map]} # The list of configured VPC endpoint IDs for the specified organization\n\n@endpoint GET /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}\n@desc Retrieve VPC endpoint details\n@returns(200) {vpc_endpoint_id: str, label: str, state: str, num_restricted_projects: int, example_restricted_projects: [str]} # Returned the current status and configuration details of the specified VPC endpoint.\n\n@endpoint POST /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}\n@desc Assign or update VPC endpoint\n@required {label: str}\n@returns(200) Assigned the VPC endpoint to the specified Neon organization\n\n@endpoint DELETE /organizations/{org_id}/vpc/region/{region_id}/vpc_endpoints/{vpc_endpoint_id}\n@desc Delete VPC endpoint\n@returns(200) Deleted the VPC endpoint from the specified Neon organization\n\n@endgroup\n\n@group regions\n@endpoint GET /regions\n@desc List supported regions\n@returns(200) {regions: [map]} # The list of active regions\n\n@endgroup\n\n@group users\n@endpoint GET /users/me\n@desc Retrieve current user details\n@returns(200) {active_seconds_limit: int(int64), billing_account: map{state: str, payment_source: map{type: str, card: map{last4: str, brand: str, exp_month: int(int64), exp_year: int(int64)}}, subscription_type: str, payment_method: str, quota_reset_at_last: str(date-time), name: str, email: str(email), address_city: str, address_country: str, address_country_name: str, address_line1: str, address_line2: str, address_postal_code: str, address_state: str, orb_portal_url: str, tax_id: str, tax_id_type: str, plan_details: map{name: str, version: map{major: int, minor: int}}}, auth_accounts: [map], email: str(email), id: str, image: str, login: str, name: str, last_name: str, projects_limit: int(int64), branches_limit: int(int64), max_autoscaling_limit: num(double), compute_seconds_limit: int(int64), plan: str} # Returned information about the current user\n\n@endpoint GET /users/me/organizations\n@desc Retrieve current user organizations list\n@returns(200) {organizations: [map]} # Returned information about the current user organizations\n\n@endpoint POST /users/me/projects/transfer\n@desc Transfer projects from personal account to organization\n@required {destination_org_id: str # The destination organization identifier, project_ids: [str] # The list of projects ids to transfer. Maximum of 400 project ids}\n@returns(200) Projects successfully transferred from personal account to organization\n@errors {406: Transfer failed - the target organization has too many projects or its plan is incompatible with the source account. Reduce the number of projects or upgrade the target organization to increase its capacity., 422: One or more of the provided project IDs have GitHub or Vercel integrations installed. Transferring integration projects is currently not supported}\n\n@endgroup\n\n@group auth\n@endpoint GET /auth\n@desc Get request authentication details\n@returns(200) {account_id: str, auth_method: str, auth_data: str} # Returned auth information about the current auth entity\n\n@endgroup\n\n@group projects\n@endpoint POST /projects/{project_id}/branches/{branch_id}/snapshot\n@desc Create snapshot\n@optional {lsn: str # The target Log Sequence Number (LSN) to take the snapshot from. Must fall within the restore window. Cannot be used with `timestamp`, timestamp: str # The target timestamp for the snapshot. Must fall within the restore window. Use ISO 8601 format (e.g. 2025-08-05T22:00:00Z). Cannot be used with `lsn`., name: str # A name for the snapshot., expires_at: str # The time at which the snapshot will be automatically deleted. Use ISO 8601 format (e.g. 2025-08-05T22:00:00Z).}\n@returns(200) {snapshot: map{id: str, name: str, lsn: str, timestamp: str, source_branch_id: str, created_at: str, expires_at: str, manual: bool}, operations: [map]} # Successfully created the snapshot\n\n@endpoint GET /projects/{project_id}/snapshots\n@desc List project snapshots\n@returns(200) {snapshots: [map]} # Projects snapshots\n\n@endpoint DELETE /projects/{project_id}/snapshots/{snapshot_id}\n@desc Delete snapshot\n@returns(202) {operations: [map]} # OK\n\n@endpoint PATCH /projects/{project_id}/snapshots/{snapshot_id}\n@desc Update snapshot\n@required {snapshot: map{name: str}}\n@returns(200) {snapshot: map{id: str, name: str, lsn: str, timestamp: str, source_branch_id: str, created_at: str, expires_at: str, manual: bool}} # Successfully updated the snapshot\n\n@endpoint POST /projects/{project_id}/snapshots/{snapshot_id}/restore\n@desc Restore snapshot\n@optional {name: str # DEPRECATED. Use the `name` field in the request body instead. A name for the newly restored branch. If omitted, a default name will be generated., name: str # A name for the newly restored branch. If omitted, a default name will be generated., target_branch_id: str # The ID of the branch to restore the snapshot into. If not specified, the branch from which the snapshot was originally created (`snapshot.source_branch_id`) will be used., finalize_restore: bool=false # Set to `true` to finalize the restore operation immediately. This will complete the restore and move any associated computes to the new branch, similar to the `finalizeRestoreBranch` operation. Defaults to `false` to allow previewing the restored snapshot data first.}\n@returns(200) Branch restored from snapshot and its operations.\n\n@endpoint GET /projects/{project_id}/branches/{branch_id}/backup_schedule\n@desc View backup schedule\n@returns(200) {schedule: [map]} # Schedule of frequencies to create snapshots\n\n@endpoint PUT /projects/{project_id}/branches/{branch_id}/backup_schedule\n@desc Update backup schedule\n@required {schedule: [map{frequency!: str, hour: int, day: int, month: int, retention_seconds: int}]}\n@returns(200) Empty response\n\n@endgroup\n\n@end\n"}}