{"components":{"schemas":{"APIKey":{"description":"The details of an API key, without the secret.","properties":{"id":{"description":"The unique ID of the API key.","format":"uuid","type":"string"},"name":{"description":"The name of the API key.","type":"string"},"project_id":{"description":"The ID of the project containing the API key.","format":"uuid","type":"string"},"roles":{"description":"The roles assigned to the API key.","items":{"description":"A role that can be assigned to an API key.\nPossible values: `ProjectEditor`, `ProjectViewer`, `ControlPlaneEditor`, `ControlPlaneViewer`, `DataPlaneEditor`, or `DataPlaneViewer`.","example":"ProjectEditor","type":"string","x-enum":["ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]},"type":"array"}},"required":["id","name","project_id","roles"],"type":"object"},"APIKeyWithSecret":{"description":"The details of an API key, including the secret. Only returned on API key creation.\n","properties":{"key":{"$ref":"#/components/schemas/APIKey"},"value":{"description":"The value to use as an API key. New keys will have the format `\"pckey_<public-label>_<unique-key>\"`. The entire string should be used when authenticating.\n","type":"string"}},"required":["key","value"],"type":"object"},"CreateAPIKeyRequest":{"properties":{"name":{"description":"The name of the API key. The name must be 1-80 characters long.\n","example":"devkey","maxLength":80,"minLength":1,"type":"string"},"roles":{"description":"The roles to create the API key with. Default is `[\"ProjectEditor\"]`.\n","items":{"description":"A role that can be assigned to an API key.\nPossible values: `ProjectEditor`, `ProjectViewer`, `ControlPlaneEditor`, `ControlPlaneViewer`, `DataPlaneEditor`, or `DataPlaneViewer`.","example":"ProjectEditor","type":"string","x-enum":["ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]},"type":"array"}},"required":["name"],"type":"object"},"CreateInviteRequest":{"properties":{"email":{"description":"The email address to invite.","example":"newhire@acme.com","format":"email","maxLength":254,"type":"string"},"role_bindings":{"description":"Role bindings for the invitee. Must include at least one `organization`-scoped binding that grants organization membership (`OrgOwner`, `OrgManager`, `OrgBillingAdmin`, or `OrgMember`); `project`-scoped bindings are optional. Not returned in the response.","items":{"$ref":"#/components/schemas/RoleBindingInput"},"maxItems":100,"minItems":1,"type":"array"}},"required":["email","role_bindings"],"type":"object"},"CreateProjectRequest":{"properties":{"force_encryption_with_cmek":{"description":"Whether to force encryption with a customer-managed encryption key (CMEK). Default is `false`.\n","type":"boolean"},"max_pods":{"description":"The maximum number of Pods that can be created in the project. Default is `0` (serverless only).\n","type":"integer"},"name":{"description":"The name of the new project.","example":"chatbot-prod","maxLength":512,"minLength":1,"type":"string"}},"required":["name"],"type":"object"},"CreateRoleBindingRequest":{"properties":{"principal_id":{"description":"Principal ID. Format depends on `principal_type`.","example":"e2e92523-85dc-4142-b8c2-e681be8b78df","type":"string"},"principal_type":{"description":"The kind of principal that receives permissions from a role binding.\nPossible values: `user`, `service_account`, `api_key`, `invite`.","example":"service_account","type":"string","x-enum":["user","service_account","api_key","invite"]},"resource_id":{"description":"Project UUID. Required when `resource_type` is `project`; omit for `organization` scope.","example":"a2f7dddb-1597-4eff-9f71-535fde243f58","type":"string"},"resource_type":{"description":"The kind of resource scope a role binding applies to.\nPossible values: `organization`, `project`.","example":"project","type":"string","x-enum":["organization","project"]},"role":{"description":"A role assigned to a principal at a resource scope.","example":"ProjectOwner","type":"string","x-enum":["OrgOwner","OrgManager","OrgMember","OrgBillingAdmin","ProjectOwner","ProjectManager","ProjectMember","ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]}},"required":["principal_id","principal_type","resource_type","role"],"type":"object"},"CreateServiceAccountRequest":{"properties":{"name":{"description":"The human-readable name of the service account.","example":"ci-prod","maxLength":80,"minLength":1,"type":"string"},"role_bindings":{"description":"Optional initial role bindings. Omitting the field or passing an empty array creates the service account with no role bindings; roles can be added later via the role binding endpoints. A service account may be granted any organization- or project-scoped role. Not returned in the response.","items":{"$ref":"#/components/schemas/RoleBindingInput"},"maxItems":100,"minItems":0,"type":"array"}},"required":["name"],"type":"object"},"ErrorResponse":{"description":"The response shape used for all error responses.","example":{"error":{"code":"QUOTA_EXCEEDED","message":"The index exceeds the project quota of 5 pods by 2 pods. Upgrade your account or change the project settings to increase the quota."},"status":429},"properties":{"error":{"description":"Detailed information about the error that occurred.","example":{"code":"INVALID_ARGUMENT","message":"Index name must contain only lowercase alphanumeric characters or hyphens, and must not begin or end with a hyphen."},"properties":{"code":{"description":"The error code.\nPossible values: `OK`, `UNKNOWN`, `INVALID_ARGUMENT`, `DEADLINE_EXCEEDED`, `QUOTA_EXCEEDED`, `NOT_FOUND`, `ALREADY_EXISTS`, `PERMISSION_DENIED`, `UNAUTHENTICATED`, `RESOURCE_EXHAUSTED`, `FAILED_PRECONDITION`, `ABORTED`, `OUT_OF_RANGE`, `UNIMPLEMENTED`, `INTERNAL`, `UNAVAILABLE`, `DATA_LOSS`, `FORBIDDEN`, or `UNPROCESSABLE_ENTITY`.        ","type":"string","x-enum":["OK","UNKNOWN","INVALID_ARGUMENT","DEADLINE_EXCEEDED","QUOTA_EXCEEDED","NOT_FOUND","ALREADY_EXISTS","PERMISSION_DENIED","UNAUTHENTICATED","RESOURCE_EXHAUSTED","FAILED_PRECONDITION","ABORTED","OUT_OF_RANGE","UNIMPLEMENTED","INTERNAL","UNAVAILABLE","DATA_LOSS","FORBIDDEN","UNPROCESSABLE_ENTITY"]},"details":{"description":"Additional information about the error. This field is not guaranteed to be present.","type":"object"},"message":{"example":"Index name must contain only lowercase alphanumeric characters or hyphens, and must not begin or end with a hyphen.","type":"string"}},"required":["code","message"],"type":"object"},"status":{"description":"The HTTP status code of the error.","example":500,"type":"integer"}},"required":["error","status"],"type":"object"},"Invite":{"description":"An invitation to join the organization.","example":{"created_at":"2026-04-14T20:00:00Z","email":"newhire@acme.com","expires_at":"2026-05-21T03:00:00Z","id":"9c8e3528-b9c0-4358-84ce-84c28e91b566","processed_at":null,"status":"pending"},"properties":{"created_at":{"description":"The date and time the invite was created.","format":"date-time","type":"string"},"email":{"description":"The email address the invite was sent to.","format":"email","type":"string"},"expires_at":{"description":"When the invite expires if not accepted. Default TTL is 7 days. Resending the invite extends this to now plus 7 days. `null` if the invite does not expire.","format":"date-time","type":["null","string"]},"id":{"description":"The unique ID of the invite.","format":"uuid","type":"string"},"processed_at":{"description":"The date and time the invite was accepted. `null` or omitted while the invite is still pending or expired.","format":"date-time","type":["null","string"]},"status":{"description":"The lifecycle status of an invite.\nPossible values: `pending`, `expired`, `processed`. List endpoints return only `pending` and `expired` invites; `processed` is returned only when fetching a single invite by ID.","example":"pending","type":"string","x-enum":["pending","expired","processed"]}},"required":["created_at","email","id","status"],"type":"object"},"InviteList":{"description":"A paginated list of invites in the organization.","example":{"data":[{"created_at":"2026-04-14T20:00:00Z","email":"newhire@acme.com","expires_at":"2026-05-21T03:00:00Z","id":"9c8e3528-b9c0-4358-84ce-84c28e91b566","processed_at":null,"status":"pending"}],"pagination":{"next":"eyJsYXN0X2lkIjoiOWM4ZTM1MjgifQ=="}},"properties":{"data":{"description":"The page of invites.","items":{"$ref":"#/components/schemas/Invite"},"type":"array"},"pagination":{"anyOf":[{"allOf":[{"description":"Pagination metadata for list responses. When `next` is present, pass it as `paginationToken` on the following request.","example":{"next":"eyJsYXN0X2lkIjogImluZGV4LTQifQ=="},"properties":{"next":{"description":"Opaque cursor for the next page. Do not parse or construct. Invalid or expired tokens return `400`.","example":"eyJsYXN0X2lkIjogImluZGV4LTQifQ==","type":"string"}},"type":"object","x-component-name":"PaginationResponse"}],"description":"Cursor envelope for the next page. `null` (or absent) on the final page of results.","type":"object"},{"type":"null"}]}},"required":["data"],"type":"object"},"ListApiKeysResponse":{"properties":{"data":{"items":{"$ref":"#/components/schemas/APIKey"},"type":"array"}},"required":["data"],"type":"object"},"Organization":{"description":"The details of an organization.","properties":{"created_at":{"description":"The date and time when the organization was created.","format":"date-time","type":"string"},"id":{"description":"The unique ID of the organization.","type":"string"},"name":{"description":"The name of the organization.","maxLength":512,"minLength":1,"type":"string"},"payment_status":{"description":"The current payment status of the organization.","type":"string","x-enum":["Active","PaymentPending","PastDue","Restricted","Suspended","Deactivated"]},"plan":{"description":"The current plan the organization is on.","type":"string","x-enum":["Free","Standard","Enterprise","Dedicated"]},"support_tier":{"description":"The support tier of the organization.","type":"string","x-enum":["Free","Developer","Pro","Enterprise"]}},"required":["created_at","id","name","payment_status","plan","support_tier"],"type":"object"},"OrganizationList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Organization"},"type":"array"}},"required":["data"],"type":"object"},"Project":{"description":"The details of a project.","properties":{"created_at":{"description":"The date and time when the project was created.","format":"date-time","type":"string"},"force_encryption_with_cmek":{"description":"Whether to force encryption with a customer-managed encryption key (CMEK).","type":"boolean"},"id":{"description":"The unique ID of the project.","format":"uuid","type":"string"},"max_pods":{"description":"The maximum number of Pods that can be created in the project.","type":"integer"},"name":{"description":"The name of the project.","maxLength":512,"minLength":1,"type":"string"},"organization_id":{"description":"The unique ID of the organization that the project belongs to.","type":"string"}},"required":["force_encryption_with_cmek","id","max_pods","name","organization_id"],"type":"object"},"ProjectList":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Project"},"type":"array"}},"required":["data"],"type":"object"},"RoleBinding":{"description":"Grants a `role` to a `principal` at a `resource` scope.","example":{"created_at":"2026-04-10T15:23:00Z","id":"9a8e3528-b9c0-4358-84ce-84c28e91b566","principal_id":"f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c","principal_type":"service_account","resource_id":"a2f7dddb-1597-4eff-9f71-535fde243f58","resource_type":"project","role":"DataPlaneEditor"},"properties":{"created_at":{"description":"When the role binding was created.","format":"date-time","type":"string"},"id":{"description":"The unique ID of the role binding.","format":"uuid","type":"string"},"principal_id":{"description":"The principal's ID. A UUID for all principal types (`user`, `service_account`, `api_key`, `invite`).","example":"e2e92523-85dc-4142-b8c2-e681be8b78df","type":"string"},"principal_type":{"description":"The kind of principal that receives permissions from a role binding.\nPossible values: `user`, `service_account`, `api_key`, `invite`.","example":"service_account","type":"string","x-enum":["user","service_account","api_key","invite"]},"resource_id":{"description":"The organization or project that the binding is scoped to.","type":"string"},"resource_type":{"description":"The kind of resource scope a role binding applies to.\nPossible values: `organization`, `project`.","example":"project","type":"string","x-enum":["organization","project"]},"role":{"description":"A role assigned to a principal at a resource scope.","example":"ProjectOwner","type":"string","x-enum":["OrgOwner","OrgManager","OrgMember","OrgBillingAdmin","ProjectOwner","ProjectManager","ProjectMember","ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]}},"required":["created_at","id","principal_id","principal_type","resource_id","resource_type","role"],"type":"object"},"RoleBindingInput":{"description":"A role to grant to the principal being created. `resource_type` selects the binding scope and acts as the tag for the entry.\nFor `organization` scope, omit `resource_id`; the binding applies to the principal's organization (inferred from the request context). For `project` scope, `resource_id` is required and must be the project UUID.","properties":{"resource_id":{"description":"Project UUID. Required when `resource_type` is `project`; omit for `organization` scope.","type":"string"},"resource_type":{"description":"The kind of resource scope a role binding applies to.\nPossible values: `organization`, `project`.","example":"project","type":"string","x-enum":["organization","project"]},"role":{"description":"A role assigned to a principal at a resource scope.","example":"ProjectOwner","type":"string","x-enum":["OrgOwner","OrgManager","OrgMember","OrgBillingAdmin","ProjectOwner","ProjectManager","ProjectMember","ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]}},"required":["resource_type","role"],"type":"object"},"RoleBindingList":{"description":"A paginated list of role bindings.","example":{"data":[{"created_at":"2026-04-10T15:23:00Z","id":"9a8e3528-b9c0-4358-84ce-84c28e91b566","principal_id":"f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c","principal_type":"service_account","resource_id":"a2f7dddb-1597-4eff-9f71-535fde243f58","resource_type":"project","role":"DataPlaneEditor"}],"pagination":{"next":"eyJsYXN0X2lkIjoiOWE4ZTM1MjgifQ=="}},"properties":{"data":{"description":"The page of role bindings.","items":{"$ref":"#/components/schemas/RoleBinding"},"type":"array"},"pagination":{"anyOf":[{"allOf":[{"description":"Pagination metadata for list responses. When `next` is present, pass it as `paginationToken` on the following request.","example":{"next":"eyJsYXN0X2lkIjogImluZGV4LTQifQ=="},"properties":{"next":{"description":"Opaque cursor for the next page. Do not parse or construct. Invalid or expired tokens return `400`.","example":"eyJsYXN0X2lkIjogImluZGV4LTQifQ==","type":"string"}},"type":"object","x-component-name":"PaginationResponse"}],"description":"Cursor envelope for the next page. `null` (or absent) on the final page of results.","type":"object"},{"type":"null"}]}},"required":["data"],"type":"object"},"ServiceAccount":{"description":"A service account. The OAuth `client_secret` is not included.","example":{"client_id":"l3Ow0CmFyc4jOONcwiKUCRqQKN0tiCAn","created_at":"2026-04-10T15:23:00Z","id":"f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c","name":"My Service Account","updated_at":"2026-04-12T09:11:00Z"},"properties":{"client_id":{"description":"The OAuth client ID used by the service account to obtain access tokens. Used only for OAuth token exchange.","type":"string"},"created_at":{"description":"The date and time the service account was created.","format":"date-time","type":"string"},"id":{"description":"The unique identifier for the service account. Use this as the path parameter on `/admin/service-accounts/{service_account_id}` endpoints and as the `principal_id` when querying or creating role bindings.","format":"uuid","type":"string"},"name":{"description":"A short human-readable label, set by the caller at creation time.","maxLength":80,"minLength":1,"type":"string"},"updated_at":{"description":"The date and time of the service account's most recent metadata update.","format":"date-time","type":"string"}},"required":["client_id","created_at","id","name","updated_at"],"type":"object"},"ServiceAccountList":{"description":"A paginated list of service accounts in the organization.","example":{"data":[{"client_id":"l3Ow0CmFyc4jOONcwiKUCRqQKN0tiCAn","created_at":"2026-04-10T15:23:00Z","id":"f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c","name":"My Service Account","updated_at":"2026-04-12T09:11:00Z"}],"pagination":{"next":"eyJsYXN0X2lkIjoiZDI0MTc3YTAifQ=="}},"properties":{"data":{"description":"The page of service accounts.","items":{"$ref":"#/components/schemas/ServiceAccount"},"type":"array"},"pagination":{"anyOf":[{"allOf":[{"description":"Pagination metadata for list responses. When `next` is present, pass it as `paginationToken` on the following request.","example":{"next":"eyJsYXN0X2lkIjogImluZGV4LTQifQ=="},"properties":{"next":{"description":"Opaque cursor for the next page. Do not parse or construct. Invalid or expired tokens return `400`.","example":"eyJsYXN0X2lkIjogImluZGV4LTQifQ==","type":"string"}},"type":"object","x-component-name":"PaginationResponse"}],"description":"Cursor envelope for the next page. `null` (or absent) on the final page of results.","type":"object"},{"type":"null"}]}},"required":["data"],"type":"object"},"ServiceAccountWithSecret":{"description":"A service account with a newly issued OAuth `client_secret`. The secret is returned only once and cannot be retrieved later.","example":{"client_secret":"","service_account":{"client_id":"l3Ow0CmFyc4jOONcwiKUCRqQKN0tiCAn","created_at":"2026-04-10T15:23:00Z","id":"f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c","name":"My Service Account","updated_at":"2026-04-10T15:23:00Z"}},"properties":{"client_secret":{"description":"The OAuth client secret. Returned exactly once. Treat this value as a credential — store it securely and never log it.","type":"string"},"service_account":{"$ref":"#/components/schemas/ServiceAccount"}},"required":["client_secret","service_account"],"type":"object"},"UpdateAPIKeyRequest":{"properties":{"name":{"description":"A new name for the API key. The name must be 1-80 characters long. If omitted, the name will not be updated.\n","example":"devkey","maxLength":80,"minLength":1,"type":"string"},"roles":{"description":"A new set of roles for the API key. Existing roles will be removed if not included.\nIf this field is omitted, the roles will not be updated.\n","items":{"description":"A role that can be assigned to an API key.\nPossible values: `ProjectEditor`, `ProjectViewer`, `ControlPlaneEditor`, `ControlPlaneViewer`, `DataPlaneEditor`, or `DataPlaneViewer`.","example":"ProjectEditor","type":"string","x-enum":["ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]},"type":"array"}},"type":"object"},"UpdateOrganizationRequest":{"properties":{"name":{"description":"The new name for the organization.","example":"organization-name","maxLength":512,"minLength":1,"type":"string"}},"type":"object"},"UpdateProjectRequest":{"properties":{"force_encryption_with_cmek":{"description":"Whether to force encryption with a customer-managed encryption key (CMEK). Once enabled, CMEK encryption cannot be disabled.\n","type":"boolean"},"max_pods":{"description":"The maximum number of Pods that can be created in the project.\n","type":"integer"},"name":{"description":"The name of the new project.","example":"chatbot-prod","maxLength":512,"minLength":1,"type":"string"}},"type":"object"},"UpdateServiceAccountRequest":{"properties":{"name":{"description":"A new name for the service account. If omitted, the name is unchanged.","example":"ci-prod-renamed","maxLength":80,"minLength":1,"type":"string"}},"type":"object"},"User":{"description":"A user who is a member of the organization.","example":{"email":"alice@example.com","id":"e2e92523-85dc-4142-b8c2-e681be8b78df","name":"Alice Example"},"properties":{"email":{"description":"The user's email address.","format":"email","type":"string"},"id":{"description":"The unique ID of the user.","format":"uuid","type":"string"},"name":{"description":"The user's display name. Omitted from the response if the user has not set one.","type":"string"}},"required":["email","id"],"type":"object"},"UserList":{"description":"A paginated list of users in the organization.","example":{"data":[{"email":"alice@example.com","id":"e2e92523-85dc-4142-b8c2-e681be8b78df","name":"Alice Example"}],"pagination":{"next":"eyJsYXN0X2lkIjoiZTJlOTI1MjMifQ=="}},"properties":{"data":{"description":"The page of users.","items":{"$ref":"#/components/schemas/User"},"type":"array"},"pagination":{"anyOf":[{"allOf":[{"description":"Pagination metadata for list responses. When `next` is present, pass it as `paginationToken` on the following request.","example":{"next":"eyJsYXN0X2lkIjogImluZGV4LTQifQ=="},"properties":{"next":{"description":"Opaque cursor for the next page. Do not parse or construct. Invalid or expired tokens return `400`.","example":"eyJsYXN0X2lkIjogImluZGV4LTQifQ==","type":"string"}},"type":"object","x-component-name":"PaginationResponse"}],"description":"Cursor envelope for the next page. `null` (or absent) on the final page of results.","type":"object"},{"type":"null"}]}},"required":["data"],"type":"object"}},"securitySchemes":{"BearerAuth":{"description":"An [access token](https://docs.pinecone.io/guides/organizations/manage-service-accounts#retrieve-an-access-token) must be provided in the `Authorization` header using the `Bearer` scheme.\n","scheme":"bearer","type":"http"}}},"info":{"contact":{"email":"support@pinecone.io","name":"Pinecone Support","url":"https://support.pinecone.io"},"description":"Provides an API for managing a Pinecone organization and its resources, including projects, API keys, organization users and invites, service accounts, and role bindings.\n","license":{"name":"Apache 2.0","url":"https://www.apache.org/licenses/LICENSE-2.0"},"title":"Pinecone Admin API","version":"2026-07"},"openapi":"3.0.3","paths":{"/admin/api-keys/{api_key_id}":{"delete":{"description":"Delete an API key from a project.","operationId":"delete_api_key","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"API key ID","in":"path","name":"api_key_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"202":{"description":"API key deletion request accepted."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Delete an API key","tags":["API Keys"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get an API key's details, excluding its secret.","operationId":"fetch_api_key","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"API key ID","in":"path","name":"api_key_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}},"description":"The details of the API key, excluding the API key secret."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get API key details","tags":["API Keys"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update an API key's name and roles.","operationId":"update_api_key","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"API key ID","in":"path","name":"api_key_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyRequest"}}},"description":"Updated name and roles for the API key.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKey"}}},"description":"API key updated successfully."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Update an API key","tags":["API Keys"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/api-keys/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/invites":{"get":{"description":"List pending and expired invites in the caller's organization.","operationId":"list_invites","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"The number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return `400 OUT_OF_RANGE`.","in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"},"style":"form"},{"description":"Cursor from `pagination.next` of a prior response. Must be reused with the same query context (path parameters, filters, and `limit`).","in":"query","name":"paginationToken","schema":{"type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteList"}}},"description":"A paginated list of pending and expired invites; processed and deleted invites are excluded. To view an invite's role bindings, call `GET /admin/role-bindings` with `principal_type=invite` as a filter."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List invites","tags":["Invites"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/invites?limit=100&paginationToken=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/invites?limit=100&paginationToken=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/invites?limit=100&paginationToken=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/invites?limit=100&paginationToken=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/invites?limit=100&paginationToken=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/invites?limit=100&paginationToken=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/invites?limit=100&paginationToken=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/invites?limit=100&paginationToken=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/invites?limit=100&paginationToken=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Invite a user to the organization by email and grant their initial role bindings.\n","operationId":"create_invite","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"examples":{"invite-org-and-project":{"summary":"Invite with org and project roles","value":{"email":"newhire@acme.com","role_bindings":[{"resource_type":"organization","role":"OrgMember"},{"resource_id":"a2f7dddb-1597-4eff-9f71-535fde243f58","resource_type":"project","role":"ProjectMember"}]}},"invite-org-member":{"summary":"Invite as OrgMember","value":{"email":"newhire@acme.com","role_bindings":[{"resource_type":"organization","role":"OrgMember"}]}}},"schema":{"$ref":"#/components/schemas/CreateInviteRequest"}}},"description":"The invite to create.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invite"}}},"description":"Invite created and email sent. The invite's role bindings are first-class; view or change them through the role-binding endpoints."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"409":{"content":{"application/json":{"examples":{"already-member":{"summary":"Invite rejected: email already belongs to an org member","value":{"error":{"code":"ALREADY_EXISTS","message":"This email already belongs to a member of the organization."},"status":409}},"binding-to-processed-invite":{"summary":"Role binding rejected: invite already accepted","value":{"error":{"code":"ALREADY_EXISTS","message":"The invite has already been accepted; manage role bindings on the resulting user instead."},"status":409}},"duplicate-role-binding":{"summary":"Role binding rejected: identical binding already exists","value":{"error":{"code":"ALREADY_EXISTS","message":"A role binding with these attributes already exists."},"status":409}},"invite-already-pending":{"summary":"Invite rejected: pending invite already exists for this email","value":{"error":{"code":"ALREADY_EXISTS","message":"A pending invite already exists for this email; its ID is 9c8e3528-b9c0-4358-84ce-84c28e91b566."},"status":409}},"invite-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a pending invite","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for a pending invite; delete the invite instead."},"status":409}},"invite-not-pending":{"summary":"Resend rejected: invite is not pending","value":{"error":{"code":"ALREADY_EXISTS","message":"Invite has already been accepted and cannot be resent."},"status":409}},"last-org-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a user","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for this user."},"status":409}},"last-org-owner":{"summary":"Cannot delete the last OrgOwner","value":{"error":{"code":"ABORTED","message":"Cannot delete the last OrgOwner role binding for this organization."},"status":409}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Invite a user to the organization","tags":["Invites"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/invites\");\nrequest.Content = new StringContent(\"{\\\"email\\\":\\\"newhire@acme.com\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/invites' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"email\":\"newhire@acme.com\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"email\":\"newhire@acme.com\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/invites\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/invites\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"email\\\":\\\"newhire@acme.com\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/invites', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"email\":\"newhire@acme.com\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/invites', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"email\\\":\\\"newhire@acme.com\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/invites\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"email\\\":\\\"newhire@acme.com\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.pinecone.io/admin/invites\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"email\":\"newhire@acme.com\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/invites\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"email\\\":\\\"newhire@acme.com\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/invites/{invite_id}":{"delete":{"description":"Delete a pending or expired invite and its role bindings; to remove an accepted user, delete the user instead.\n","operationId":"delete_invite","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Invite ID","in":"path","name":"invite_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"202":{"description":"Invite deletion request accepted. The invite and its role bindings are removed immediately; the invite then returns 404, and repeating the request returns 404 as well."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"examples":{"already-member":{"summary":"Invite rejected: email already belongs to an org member","value":{"error":{"code":"ALREADY_EXISTS","message":"This email already belongs to a member of the organization."},"status":409}},"binding-to-processed-invite":{"summary":"Role binding rejected: invite already accepted","value":{"error":{"code":"ALREADY_EXISTS","message":"The invite has already been accepted; manage role bindings on the resulting user instead."},"status":409}},"duplicate-role-binding":{"summary":"Role binding rejected: identical binding already exists","value":{"error":{"code":"ALREADY_EXISTS","message":"A role binding with these attributes already exists."},"status":409}},"invite-already-pending":{"summary":"Invite rejected: pending invite already exists for this email","value":{"error":{"code":"ALREADY_EXISTS","message":"A pending invite already exists for this email; its ID is 9c8e3528-b9c0-4358-84ce-84c28e91b566."},"status":409}},"invite-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a pending invite","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for a pending invite; delete the invite instead."},"status":409}},"invite-not-pending":{"summary":"Resend rejected: invite is not pending","value":{"error":{"code":"ALREADY_EXISTS","message":"Invite has already been accepted and cannot be resent."},"status":409}},"last-org-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a user","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for this user."},"status":409}},"last-org-owner":{"summary":"Cannot delete the last OrgOwner","value":{"error":{"code":"ABORTED","message":"Cannot delete the last OrgOwner role binding for this organization."},"status":409}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Delete an invite","tags":["Invites"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get an invite in the caller's organization by ID.","operationId":"fetch_invite","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Invite ID","in":"path","name":"invite_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invite"}}},"description":"The invite details. To view this invite's role bindings, call `GET /admin/role-bindings` with `principal_type=invite` as a filter."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get invite details","tags":["Invites"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/invites/{invite_id}/resend":{"post":{"description":"Resend the invite email and extend its expiration to 7 days from now; limited to 100 emails per hour per organization.\n","operationId":"resend_invite","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Invite ID","in":"path","name":"invite_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"examples":{"resent":{"summary":"Resend succeeded","value":{"created_at":"2026-05-14T20:14:00Z","email":"newhire@acme.com","expires_at":"2026-05-28T20:14:00Z","id":"9c8e3528-b9c0-4358-84ce-84c28e91b566","processed_at":null,"status":"pending"}}},"schema":{"$ref":"#/components/schemas/Invite"}}},"description":"Invite resent successfully. The invite returns to a pending status and its expiration is extended to 7 days from now."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"examples":{"already-member":{"summary":"Invite rejected: email already belongs to an org member","value":{"error":{"code":"ALREADY_EXISTS","message":"This email already belongs to a member of the organization."},"status":409}},"binding-to-processed-invite":{"summary":"Role binding rejected: invite already accepted","value":{"error":{"code":"ALREADY_EXISTS","message":"The invite has already been accepted; manage role bindings on the resulting user instead."},"status":409}},"duplicate-role-binding":{"summary":"Role binding rejected: identical binding already exists","value":{"error":{"code":"ALREADY_EXISTS","message":"A role binding with these attributes already exists."},"status":409}},"invite-already-pending":{"summary":"Invite rejected: pending invite already exists for this email","value":{"error":{"code":"ALREADY_EXISTS","message":"A pending invite already exists for this email; its ID is 9c8e3528-b9c0-4358-84ce-84c28e91b566."},"status":409}},"invite-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a pending invite","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for a pending invite; delete the invite instead."},"status":409}},"invite-not-pending":{"summary":"Resend rejected: invite is not pending","value":{"error":{"code":"ALREADY_EXISTS","message":"Invite has already been accepted and cannot be resent."},"status":409}},"last-org-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a user","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for this user."},"status":409}},"last-org-owner":{"summary":"Cannot delete the last OrgOwner","value":{"error":{"code":"ABORTED","message":"Cannot delete the last OrgOwner role binding for this organization."},"status":409}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Rate limit exceeded. The org has sent the maximum number of invite emails for the current hour."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Resend an invite email","tags":["Invites"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/invites/00000000-0000-0000-0000-000000000000/resend\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/organizations":{"get":{"description":"List all organizations associated with an account.","operationId":"list_organizations","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationList"}}},"description":"A list of organizations."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List organizations","tags":["Organizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/organizations\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/organizations'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/organizations\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/organizations\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/organizations', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/organizations', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/organizations\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/organizations\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/organizations\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/organizations/{organization_id}":{"delete":{"description":"Delete an organization and all its configuration; delete all its projects first.\n","operationId":"delete_organization","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Organization ID","in":"path","name":"organization_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"202":{"description":"Organization deletion request accepted."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Delete an organization","tags":["Organizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/organizations/string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/organizations/string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/organizations/string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/organizations/string\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/organizations/string', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/organizations/string', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/organizations/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/organizations/string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/organizations/string\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get an organization's details.","operationId":"fetch_organization","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Organization ID","in":"path","name":"organization_id","required":true,"schema":{"type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"The details of an organization."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get organization details","tags":["Organizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/organizations/string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/organizations/string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/organizations/string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/organizations/string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/organizations/string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/organizations/string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/organizations/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/organizations/string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/organizations/string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update an organization's name.\n","operationId":"update_organization","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Organization ID","in":"path","name":"organization_id","required":true,"schema":{"type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequest"}}},"description":"Organization details to be updated.\n","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Organization"}}},"description":"The organization was successfully updated."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Update an organization","tags":["Organizations"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"https://api.pinecone.io/admin/organizations/string\");\nrequest.Content = new StringContent(\"{\\\"name\\\":\\\"organization-name\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'https://api.pinecone.io/admin/organizations/string' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"organization-name\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"name\":\"organization-name\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"https://api.pinecone.io/admin/organizations/string\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/organizations/string\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"name\\\":\\\"organization-name\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/organizations/string', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"name\":\"organization-name\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/organizations/string', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"name\\\":\\\"organization-name\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/organizations/string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"name\\\":\\\"organization-name\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.pinecone.io/admin/organizations/string\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"name\":\"organization-name\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/organizations/string\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"organization-name\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/projects":{"get":{"description":"List all projects in an organization.","operationId":"list_projects","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProjectList"}}},"description":"A list of projects."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List projects","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/projects\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/projects'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/projects\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/projects\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create a new project.","operationId":"create_project","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProjectRequest"}}},"description":"The details of the new project.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The project was successfully created."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Create a new project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/projects\");\nrequest.Content = new StringContent(\"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/projects' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/projects\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.pinecone.io/admin/projects\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/projects/{project_id}":{"delete":{"description":"Delete a project and all its configuration; delete its indexes, assistants, backups, and collections first.\n","operationId":"delete_project","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Project ID","in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"202":{"description":"Project deletion request accepted. Other project resources, such as API keys, are deleted automatically."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Delete a project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get a project's details.","operationId":"fetch_project","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Project ID","in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The details of a project."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get project details","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update a project's name, maximum number of Pods, or customer-managed encryption key (CMEK).\n","operationId":"update_project","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Project ID","in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProjectRequest"}}},"description":"Project details to be updated. Fields that are omitted will not be updated.\n","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}},"description":"The project was successfully updated."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Update a project","tags":["Projects"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"force_encryption_with_cmek\":true,\"max_pods\":0,\"name\":\"chatbot-prod\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"force_encryption_with_cmek\\\":true,\\\"max_pods\\\":0,\\\"name\\\":\\\"chatbot-prod\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/projects/{project_id}/api-keys":{"get":{"description":"List all API keys in a project.","operationId":"list_project_api_keys","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Project ID","in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListApiKeysResponse"}}},"description":"A list of API keys."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List API keys","tags":["API Keys"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create an API key for a project to authenticate Data Plane and Control Plane requests.\n","operationId":"create_api_key","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Project ID","in":"path","name":"project_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyRequest"}}},"description":"The details of the new API key.","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/APIKeyWithSecret"}}},"description":"API key created successfully."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not enough available quota to complete this operation."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Create an API key","tags":["API Keys"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\");\nrequest.Content = new StringContent(\"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"name\":\"devkey\",\"roles\":[\"ProjectEditor\"]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/projects/00000000-0000-0000-0000-000000000000/api-keys\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"devkey\\\",\\\"roles\\\":[\\\"ProjectEditor\\\"]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/role-bindings":{"get":{"description":"List role bindings in the caller's organization, optionally filtered by principal, resource, and role.\n","operationId":"list_role_bindings","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Filter by principal type. Required when `principal_id` is set.","in":"query","name":"principal_type","schema":{"description":"The kind of principal that receives permissions from a role binding.\nPossible values: `user`, `service_account`, `api_key`, `invite`.","example":"service_account","type":"string","x-enum":["user","service_account","api_key","invite"]},"style":"form"},{"description":"Filter by principal ID. Requires `principal_type`. The ID is a UUID for all principal types (user, service account, or invite).","in":"query","name":"principal_id","schema":{"type":"string"},"style":"form"},{"description":"Filter by resource type. Required when `resource_id` is set.","in":"query","name":"resource_type","schema":{"description":"The kind of resource scope a role binding applies to.\nPossible values: `organization`, `project`.","example":"project","type":"string","x-enum":["organization","project"]},"style":"form"},{"description":"Filter by resource ID. Requires `resource_type`.","in":"query","name":"resource_id","schema":{"type":"string"},"style":"form"},{"description":"Filter by role.","in":"query","name":"role","schema":{"description":"A role assigned to a principal at a resource scope.","example":"ProjectOwner","type":"string","x-enum":["OrgOwner","OrgManager","OrgMember","OrgBillingAdmin","ProjectOwner","ProjectManager","ProjectMember","ProjectEditor","ProjectViewer","ControlPlaneEditor","ControlPlaneViewer","DataPlaneEditor","DataPlaneViewer"]},"style":"form"},{"description":"The number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return `400 OUT_OF_RANGE`.","in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"},"style":"form"},{"description":"Cursor from `pagination.next` of a prior response. Must be reused with the same query context (path parameters, filters, and `limit`).","in":"query","name":"paginationToken","schema":{"type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"examples":{"org-scope-bindings":{"summary":"Org-scoped bindings","value":{"data":[{"created_at":"2026-04-10T15:23:00Z","id":"5a86ed21-daf1-448d-a9ca-f92a0fd839d3","principal_id":"e2e92523-85dc-4142-b8c2-e681be8b78df","principal_type":"user","resource_id":"-ExampleOrgId0000000","resource_type":"organization","role":"OrgMember"}],"pagination":{"next":"eyJsYXN0X2lkIjoiNWE4NmVkMjEifQ=="}}}},"schema":{"$ref":"#/components/schemas/RoleBindingList"}}},"description":"A paginated list of role bindings. When multiple filters are supplied, they are combined with AND."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List role bindings","tags":["Role Bindings"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/role-bindings?limit=100&paginationToken=string&principal_id=string&principal_type=service_account&resource_id=string&resource_type=project&role=ProjectOwner\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Grant a role to a principal at an organization or project scope.\n","operationId":"create_role_binding","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"examples":{"bind-data-plane-editor":{"summary":"Bind DataPlaneEditor to a service account (project scope)","value":{"principal_id":"f8a3b2c1-4d5e-6f7a-8b9c-0d1e2f3a4b5c","principal_type":"service_account","resource_id":"a2f7dddb-1597-4eff-9f71-535fde243f58","resource_type":"project","role":"DataPlaneEditor"}},"bind-org-member":{"summary":"Bind OrgMember to a user (organization scope)","value":{"principal_id":"e2e92523-85dc-4142-b8c2-e681be8b78df","principal_type":"user","resource_type":"organization","role":"OrgMember"}},"bind-org-member-to-invite":{"summary":"Bind OrgMember to an invite (organization scope)","value":{"principal_id":"9c8e3528-b9c0-4358-84ce-84c28e91b566","principal_type":"invite","resource_type":"organization","role":"OrgMember"}}},"schema":{"$ref":"#/components/schemas/CreateRoleBindingRequest"}}},"description":"Principal, resource scope, and role to bind.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBinding"}}},"description":"Role binding created."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"examples":{"already-member":{"summary":"Invite rejected: email already belongs to an org member","value":{"error":{"code":"ALREADY_EXISTS","message":"This email already belongs to a member of the organization."},"status":409}},"binding-to-processed-invite":{"summary":"Role binding rejected: invite already accepted","value":{"error":{"code":"ALREADY_EXISTS","message":"The invite has already been accepted; manage role bindings on the resulting user instead."},"status":409}},"duplicate-role-binding":{"summary":"Role binding rejected: identical binding already exists","value":{"error":{"code":"ALREADY_EXISTS","message":"A role binding with these attributes already exists."},"status":409}},"invite-already-pending":{"summary":"Invite rejected: pending invite already exists for this email","value":{"error":{"code":"ALREADY_EXISTS","message":"A pending invite already exists for this email; its ID is 9c8e3528-b9c0-4358-84ce-84c28e91b566."},"status":409}},"invite-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a pending invite","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for a pending invite; delete the invite instead."},"status":409}},"invite-not-pending":{"summary":"Resend rejected: invite is not pending","value":{"error":{"code":"ALREADY_EXISTS","message":"Invite has already been accepted and cannot be resent."},"status":409}},"last-org-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a user","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for this user."},"status":409}},"last-org-owner":{"summary":"Cannot delete the last OrgOwner","value":{"error":{"code":"ABORTED","message":"Cannot delete the last OrgOwner role binding for this organization."},"status":409}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Create a role binding","tags":["Role Bindings"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/role-bindings\");\nrequest.Content = new StringContent(\"{\\\"principal_id\\\":\\\"e2e92523-85dc-4142-b8c2-e681be8b78df\\\",\\\"principal_type\\\":\\\"service_account\\\",\\\"resource_id\\\":\\\"a2f7dddb-1597-4eff-9f71-535fde243f58\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/role-bindings' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"principal_id\":\"e2e92523-85dc-4142-b8c2-e681be8b78df\",\"principal_type\":\"service_account\",\"resource_id\":\"a2f7dddb-1597-4eff-9f71-535fde243f58\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"principal_id\":\"e2e92523-85dc-4142-b8c2-e681be8b78df\",\"principal_type\":\"service_account\",\"resource_id\":\"a2f7dddb-1597-4eff-9f71-535fde243f58\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/role-bindings\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/role-bindings\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"principal_id\\\":\\\"e2e92523-85dc-4142-b8c2-e681be8b78df\\\",\\\"principal_type\\\":\\\"service_account\\\",\\\"resource_id\\\":\\\"a2f7dddb-1597-4eff-9f71-535fde243f58\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"principal_id\":\"e2e92523-85dc-4142-b8c2-e681be8b78df\",\"principal_type\":\"service_account\",\"resource_id\":\"a2f7dddb-1597-4eff-9f71-535fde243f58\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"principal_id\\\":\\\"e2e92523-85dc-4142-b8c2-e681be8b78df\\\",\\\"principal_type\\\":\\\"service_account\\\",\\\"resource_id\\\":\\\"a2f7dddb-1597-4eff-9f71-535fde243f58\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/role-bindings\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"principal_id\\\":\\\"e2e92523-85dc-4142-b8c2-e681be8b78df\\\",\\\"principal_type\\\":\\\"service_account\\\",\\\"resource_id\\\":\\\"a2f7dddb-1597-4eff-9f71-535fde243f58\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.pinecone.io/admin/role-bindings\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"principal_id\":\"e2e92523-85dc-4142-b8c2-e681be8b78df\",\"principal_type\":\"service_account\",\"resource_id\":\"a2f7dddb-1597-4eff-9f71-535fde243f58\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/role-bindings\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"principal_id\\\":\\\"e2e92523-85dc-4142-b8c2-e681be8b78df\\\",\\\"principal_type\\\":\\\"service_account\\\",\\\"resource_id\\\":\\\"a2f7dddb-1597-4eff-9f71-535fde243f58\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/role-bindings/{role_binding_id}":{"delete":{"description":"Delete a role binding; permissions are revoked when the deletion completes.\n","operationId":"delete_role_binding","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Role binding ID","in":"path","name":"role_binding_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"202":{"description":"Role binding deletion accepted. The binding is removed immediately; it then returns 404, and repeating the request returns 404 as well."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"examples":{"already-member":{"summary":"Invite rejected: email already belongs to an org member","value":{"error":{"code":"ALREADY_EXISTS","message":"This email already belongs to a member of the organization."},"status":409}},"binding-to-processed-invite":{"summary":"Role binding rejected: invite already accepted","value":{"error":{"code":"ALREADY_EXISTS","message":"The invite has already been accepted; manage role bindings on the resulting user instead."},"status":409}},"duplicate-role-binding":{"summary":"Role binding rejected: identical binding already exists","value":{"error":{"code":"ALREADY_EXISTS","message":"A role binding with these attributes already exists."},"status":409}},"invite-already-pending":{"summary":"Invite rejected: pending invite already exists for this email","value":{"error":{"code":"ALREADY_EXISTS","message":"A pending invite already exists for this email; its ID is 9c8e3528-b9c0-4358-84ce-84c28e91b566."},"status":409}},"invite-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a pending invite","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for a pending invite; delete the invite instead."},"status":409}},"invite-not-pending":{"summary":"Resend rejected: invite is not pending","value":{"error":{"code":"ALREADY_EXISTS","message":"Invite has already been accepted and cannot be resent."},"status":409}},"last-org-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a user","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for this user."},"status":409}},"last-org-owner":{"summary":"Cannot delete the last OrgOwner","value":{"error":{"code":"ABORTED","message":"Cannot delete the last OrgOwner role binding for this organization."},"status":409}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Delete a role binding","tags":["Role Bindings"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get a role binding in the caller's organization by ID.\n","operationId":"fetch_role_binding","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Role binding ID","in":"path","name":"role_binding_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleBinding"}}},"description":"The role binding."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get role binding details","tags":["Role Bindings"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/role-bindings/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/service-accounts":{"get":{"description":"List service accounts in the caller's organization.","operationId":"list_service_accounts","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"The number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return `400 OUT_OF_RANGE`.","in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"},"style":"form"},{"description":"Cursor from `pagination.next` of a prior response. Must be reused with the same query context (path parameters, filters, and `limit`).","in":"query","name":"paginationToken","schema":{"type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccountList"}}},"description":"A paginated list of service accounts. Role bindings are not included; use `GET /admin/role-bindings` to list them."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List service accounts","tags":["Service Accounts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/service-accounts?limit=100&paginationToken=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"post":{"description":"Create a service account with optional initial role bindings; the client secret is returned only once.\n","operationId":"create_service_account","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"examples":{"ci-service-account":{"summary":"Service account with project bindings","value":{"name":"ci-prod","role_bindings":[{"resource_id":"a2f7dddb-1597-4eff-9f71-535fde243f58","resource_type":"project","role":"DataPlaneEditor"}]}},"org-service-account":{"summary":"Service account with an organization binding","value":{"name":"org-automation","role_bindings":[{"resource_type":"organization","role":"OrgManager"}]}}},"schema":{"$ref":"#/components/schemas/CreateServiceAccountRequest"}}},"description":"The service account to create. Repeating this request may create duplicate service accounts.","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccountWithSecret"}}},"description":"Service account created. Role bindings are not returned here; use `GET /admin/role-bindings` to list them."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Create a service account","tags":["Service Accounts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/service-accounts\");\nrequest.Content = new StringContent(\"{\\\"name\\\":\\\"ci-prod\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/service-accounts' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"ci-prod\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"name\":\"ci-prod\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}`)\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/service-accounts\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/service-accounts\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"POST\", HttpRequest.BodyPublishers.ofString(\"{\\\"name\\\":\\\"ci-prod\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts', {\n  method: 'POST',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"name\":\"ci-prod\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"name\\\":\\\"ci-prod\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/service-accounts\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"name\\\":\\\"ci-prod\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"POST\",\n    \"https://api.pinecone.io/admin/service-accounts\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"name\":\"ci-prod\",\"role_bindings\":[{\"resource_id\":\"string\",\"resource_type\":\"project\",\"role\":\"ProjectOwner\"}]}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/service-accounts\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"ci-prod\\\",\\\"role_bindings\\\":[{\\\"resource_id\\\":\\\"string\\\",\\\"resource_type\\\":\\\"project\\\",\\\"role\\\":\\\"ProjectOwner\\\"}]}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/service-accounts/{service_account_id}":{"delete":{"description":"Delete a service account and its role bindings; tokens it minted are revoked within a few seconds.\n","operationId":"delete_service_account","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"The unique identifier of the service account.","in":"path","name":"service_account_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"202":{"description":"Service account deletion request accepted. The service account and its role bindings are removed immediately; it then returns 404, and repeating the request returns 404 as well."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Delete a service account","tags":["Service Accounts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get a service account by ID; the client secret is returned only from create and rotate-secret requests.\n","operationId":"fetch_service_account","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"The unique identifier of the service account.","in":"path","name":"service_account_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccount"}}},"description":"The service account details (without the client secret). Role bindings are not included; use `GET /admin/role-bindings` to list them."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get service account details","tags":["Service Accounts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"patch":{"description":"Update a service account's name; role bindings are managed through the role-binding endpoints.\n","operationId":"update_service_account","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"The unique identifier of the service account.","in":"path","name":"service_account_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServiceAccountRequest"}}},"description":"Updated metadata for the service account.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccount"}}},"description":"Service account updated successfully."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Update a service account","tags":["Service Accounts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Patch, \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\");\nrequest.Content = new StringContent(\"{\\\"name\\\":\\\"ci-prod-renamed\\\"}\", Encoding.UTF8, \"application/json\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X PATCH 'https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000' \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"name\":\"ci-prod-renamed\"}'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\tbody := strings.NewReader(`{\"name\":\"ci-prod-renamed\"}`)\n\treq, err := http.NewRequestWithContext(ctx, \"PATCH\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\", body)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\treq.Header.Set(\"Content-Type\", \"application/json\")\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\"))\n    .method(\"PATCH\", HttpRequest.BodyPublishers.noBody())\n    .header(\"Content-Type\", \"application/json\")\n    .method(\"PATCH\", HttpRequest.BodyPublishers.ofString(\"{\\\"name\\\":\\\"ci-prod-renamed\\\"}\"))\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000', {\n  method: 'PATCH',\n  headers: { 'Content-Type': 'application/json' },\n  body: JSON.stringify({\"name\":\"ci-prod-renamed\"}),\n});\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000', { method: 'PATCH', headers: { 'Content-Type': 'application/json' }, body: \"{\\\"name\\\":\\\"ci-prod-renamed\\\"}\" });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"PATCH\");\ncurl_setopt($request, CURLOPT_POSTFIELDS, \"{\\\"name\\\":\\\"ci-prod-renamed\\\"}\");\ncurl_setopt($request, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\n    \"PATCH\",\n    \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\",\n    headers={\"Content-Type\": \"application/json\"},\n    data='{\"name\":\"ci-prod-renamed\"}',\n)\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"PATCH\", true, true, uri)\nrequest['Content-Type'] = 'application/json'\nrequest.body = \"{\\\"name\\\":\\\"ci-prod-renamed\\\"}\"\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/service-accounts/{service_account_id}/rotate-secret":{"post":{"description":"Rotate a service account's OAuth client secret; the previous secret and its tokens are revoked within seconds and the new secret is returned only once.\n","operationId":"rotate_service_account_secret","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"The unique identifier of the service account.","in":"path","name":"service_account_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceAccountWithSecret"}}},"description":"Secret rotated successfully. The new `client_secret` is in the response body and is returned exactly once. Repeating the request rotates again and invalidates the previously returned secret."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Rotate a service account's OAuth client secret","tags":["Service Accounts"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Post, \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X POST 'https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"POST\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret\"))\n    .method(\"POST\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret', { method: 'POST' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret', { method: 'POST' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"POST\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"POST\", \"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/service-accounts/00000000-0000-0000-0000-000000000000/rotate-secret\")\nrequest = Net::HTTPGenericRequest.new(\"POST\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/users":{"get":{"description":"List users in the caller's organization, optionally filtered by email address.\n","operationId":"list_users","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"Case-insensitive filter on the user's email address. Malformed email returns `400 INVALID_ARGUMENT`.","in":"query","name":"email","schema":{"format":"email","maxLength":254,"type":"string"},"style":"form"},{"description":"The number of results to return per page. When omitted, the server defaults to 100. Out-of-range values return `400 OUT_OF_RANGE`.","in":"query","name":"limit","schema":{"default":100,"maximum":100,"minimum":1,"type":"integer"},"style":"form"},{"description":"Cursor from `pagination.next` of a prior response. Must be reused with the same query context (path parameters, filters, and `limit`).","in":"query","name":"paginationToken","schema":{"type":"string"},"style":"form"}],"responses":{"200":{"content":{"application/json":{"examples":{"email-filter-empty":{"summary":"Case-insensitive email filter, no match","value":{"data":[],"pagination":null}},"email-filter-match":{"summary":"Case-insensitive email filter, found","value":{"data":[{"email":"alice@example.com","id":"e2e92523-85dc-4142-b8c2-e681be8b78df","name":"Alice Example"}],"pagination":null}},"paginated-users":{"summary":"A page of users","value":{"data":[{"email":"alice@example.com","id":"e2e92523-85dc-4142-b8c2-e681be8b78df","name":"Alice Example"}],"pagination":{"next":"eyJsYXN0X2lkIjoiZTJlOTI1MjMifQ=="}}}},"schema":{"$ref":"#/components/schemas/UserList"}}},"description":"A paginated list of users. Role bindings are not included; use `GET /admin/role-bindings` to list them."},"400":{"content":{"application/json":{"examples":{"index-metric-validation-error":{"summary":"Validation error","value":{"error":{"code":"INVALID_ARGUMENT","message":"Bad request. The request body included invalid request parameters."},"status":400}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad request. The request body included invalid request parameters."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"List users in the organization","tags":["Users"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/users?email=user%40example.com&limit=100&paginationToken=string\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}},"/admin/users/{user_id}":{"delete":{"description":"Remove a user from the organization and revoke their role bindings; their Pinecone account is not deleted.\n","operationId":"delete_user","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"User ID","in":"path","name":"user_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"202":{"description":"User removal request accepted. The user's role bindings are revoked immediately; the user then returns 404, and repeating the request returns 404 as well."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"409":{"content":{"application/json":{"examples":{"already-member":{"summary":"Invite rejected: email already belongs to an org member","value":{"error":{"code":"ALREADY_EXISTS","message":"This email already belongs to a member of the organization."},"status":409}},"binding-to-processed-invite":{"summary":"Role binding rejected: invite already accepted","value":{"error":{"code":"ALREADY_EXISTS","message":"The invite has already been accepted; manage role bindings on the resulting user instead."},"status":409}},"duplicate-role-binding":{"summary":"Role binding rejected: identical binding already exists","value":{"error":{"code":"ALREADY_EXISTS","message":"A role binding with these attributes already exists."},"status":409}},"invite-already-pending":{"summary":"Invite rejected: pending invite already exists for this email","value":{"error":{"code":"ALREADY_EXISTS","message":"A pending invite already exists for this email; its ID is 9c8e3528-b9c0-4358-84ce-84c28e91b566."},"status":409}},"invite-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a pending invite","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for a pending invite; delete the invite instead."},"status":409}},"invite-not-pending":{"summary":"Resend rejected: invite is not pending","value":{"error":{"code":"ALREADY_EXISTS","message":"Invite has already been accepted and cannot be resent."},"status":409}},"last-org-membership-binding":{"summary":"Cannot remove the last organization-membership binding for a user","value":{"error":{"code":"ABORTED","message":"Cannot delete the last organization-membership role binding for this user."},"status":409}},"last-org-owner":{"summary":"Cannot delete the last OrgOwner","value":{"error":{"code":"ABORTED","message":"Cannot delete the last OrgOwner role binding for this organization."},"status":409}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Conflict. The request conflicts with the persisted state of the resource. Common causes include invariant violations (e.g., removing the last `OrgOwner`), lifecycle-state mismatches (e.g., resending an invite that is not pending), and constraint violations checked against persisted data."},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Remove a user from the organization","tags":["Users"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Delete, \"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X DELETE 'https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"DELETE\", \"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\"))\n    .method(\"DELETE\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000', { method: 'DELETE' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"DELETE\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"DELETE\", \"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"DELETE\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]},"get":{"description":"Get a user in the caller's organization by ID.","operationId":"fetch_user","parameters":[{"description":"Required date-based version header","in":"header","name":"X-Pinecone-Api-Version","required":true,"schema":{"default":"2026-07","type":"string"},"style":"simple"},{"description":"User ID","in":"path","name":"user_id","required":true,"schema":{"format":"uuid","type":"string"},"style":"simple"}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}},"description":"The user's details. Role bindings are not included; use `GET /admin/role-bindings` to list the user's roles."},"401":{"content":{"application/json":{"examples":{"unauthorized":{"summary":"Unauthorized","value":{"error":{"code":"UNAUTHENTICATED","message":"Invalid API key."},"status":401}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unauthorized. Possible causes: Invalid API key."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Not found"},"4XX":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Unexpected error on request."},"500":{"content":{"application/json":{"examples":{"internal-server-error":{"summary":"Internal server error","value":{"error":{"code":"UNKNOWN","message":"Internal server error"},"status":500}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Internal server error."}},"summary":"Get user details","tags":["Users"],"x-codeSamples":[{"lang":"csharp","source":"using var client = new HttpClient();\nusing var request = new HttpRequestMessage(HttpMethod.Get, \"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\");\nusing var response = await client.SendAsync(request);"},{"lang":"curl","source":"curl -X GET 'https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000'"},{"lang":"go","source":"package main\n\nimport (\n\t\"context\"\n\t\"net/http\"\n)\n\nfunc main() {\n\tctx := context.Background()\n\treq, err := http.NewRequestWithContext(ctx, \"GET\", \"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\", nil)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tresp, err := http.DefaultClient.Do(req)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tdefer resp.Body.Close()\n}"},{"lang":"java","source":"var request = HttpRequest.newBuilder(URI.create(\"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\"))\n    .method(\"GET\", HttpRequest.BodyPublishers.noBody())\n    .build();\nvar response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());"},{"lang":"javascript-fetch","source":"const response = await fetch('https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconst data = await response.json();"},{"lang":"node","source":"const response = await fetch('https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000', { method: 'GET' });\nconsole.log(await response.json());"},{"lang":"php","source":"<?php\n$request = curl_init(\"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\");\ncurl_setopt($request, CURLOPT_CUSTOMREQUEST, \"GET\");\n$response = curl_exec($request);\ncurl_close($request);"},{"lang":"python","source":"import requests\n\nresponse = requests.request(\"GET\", \"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\")\nprint(response.json())"},{"lang":"ruby","source":"require 'net/http'\n\nuri = URI(\"https://api.pinecone.io/admin/users/00000000-0000-0000-0000-000000000000\")\nrequest = Net::HTTPGenericRequest.new(\"GET\", false, true, uri)\nresponse = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(request) }"}]}}},"security":[{"BearerAuth":[]}],"servers":[{"description":"Production API endpoints","url":"https://api.pinecone.io"}],"tags":[{"description":"Actions that manage API Keys.","name":"API Keys"},{"description":"Actions that manage organizations.","name":"Organizations"},{"description":"Actions that manage projects.","name":"Projects"},{"description":"Actions that manage users. Role bindings are not included in user responses; use the Role Bindings endpoints to view them.","name":"Users"},{"description":"Actions that manage invites. An invite's role bindings are first-class and appear in the Role Bindings endpoints with `principal_type=invite`.","name":"Invites"},{"description":"Actions that manage service accounts. Role bindings are not included in service account responses; use the Role Bindings endpoints to view them.","name":"Service Accounts"},{"description":"Actions that manage role bindings.","name":"Role Bindings"}]}