From c9786d1dc308a29a9d6660da779fc2ddffe439ed Mon Sep 17 00:00:00 2001 From: mandarini <6603745+mandarini@users.noreply.github.com> Date: Mon, 8 Jun 2026 12:31:51 +0000 Subject: [PATCH] docs: update js sdk docs (2.108.0) --- apps/docs/spec/api_v1_openapi.json | 59 +- apps/docs/spec/api_v2_openapi.json | 318 +++++++++ apps/docs/spec/common-api-sections.json | 12 + apps/docs/spec/storage_v0_openapi.json | 75 ++- .../transforms/api_v1_openapi_deparsed.json | 216 +++++- .../transforms/api_v2_openapi_deparsed.json | 616 ++++++++++++++++++ .../storage_v0_openapi_deparsed.json | 83 ++- 7 files changed, 1335 insertions(+), 44 deletions(-) diff --git a/apps/docs/spec/api_v1_openapi.json b/apps/docs/spec/api_v1_openapi.json index 3fcc8254819..81d9ec8e5e4 100644 --- a/apps/docs/spec/api_v1_openapi.json +++ b/apps/docs/spec/api_v1_openapi.json @@ -700,6 +700,7 @@ }, "/v1/oauth/token": { "post": { + "description": "Supports `authorization_code`, `refresh_token`, and `urn:ietf:params:oauth:grant-type:jwt-bearer` grant types. The `jwt-bearer` grant type (IDJAG — identity-directed JWT assertion) is in beta and available on Team and Enterprise plans only.", "operationId": "v1-exchange-oauth-token", "parameters": [], "requestBody": { @@ -7965,13 +7966,24 @@ "OAuthTokenBody": { "type": "object", "properties": { - "grant_type": { "type": "string", "enum": ["authorization_code", "refresh_token"] }, + "grant_type": { + "type": "string", + "enum": [ + "authorization_code", + "refresh_token", + "urn:ietf:params:oauth:grant-type:jwt-bearer" + ] + }, "client_id": { "type": "string", "format": "uuid" }, "client_secret": { "type": "string" }, "code": { "type": "string" }, "code_verifier": { "type": "string" }, "redirect_uri": { "type": "string" }, "refresh_token": { "type": "string" }, + "assertion": { + "type": "string", + "description": "IDJAG assertion JWT for grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer. Beta - available on Team and Enterprise plans only." + }, "resource": { "type": "string", "format": "uri", @@ -7994,11 +8006,14 @@ "type": "object", "properties": { "access_token": { "type": "string" }, - "refresh_token": { "type": "string" }, + "refresh_token": { + "type": "string", + "description": "The `urn:ietf:params:oauth:grant-type:jwt-bearer` grant type issues access tokens only, no refresh token is returned and the token cannot be revoked via `/v1/oauth/revoke`." + }, "expires_in": { "type": "integer" }, "token_type": { "type": "string", "enum": ["Bearer"] } }, - "required": ["access_token", "refresh_token", "expires_in", "token_type"], + "required": ["access_token", "expires_in", "token_type"], "additionalProperties": false }, "OAuthRevokeTokenBody": { @@ -11525,6 +11540,25 @@ "properties": { "effective_cache_size": { "type": "string" }, "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { "type": "boolean" }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { "type": "boolean" }, + "log_connections": { "type": "boolean" }, + "log_disconnections": { "type": "boolean" }, + "log_duration": { "type": "boolean" }, + "log_lock_waits": { "type": "boolean" }, + "log_recovery_conflict_waits": { "type": "boolean" }, + "log_replication_commands": { "type": "boolean" }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { "type": "string" }, "maintenance_work_mem": { "type": "string" }, "track_activity_query_size": { "type": "string" }, "max_connections": { "type": "integer", "minimum": 1, "maximum": 262143 }, @@ -11567,6 +11601,25 @@ "properties": { "effective_cache_size": { "type": "string" }, "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { "type": "boolean" }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { "type": "boolean" }, + "log_connections": { "type": "boolean" }, + "log_disconnections": { "type": "boolean" }, + "log_duration": { "type": "boolean" }, + "log_lock_waits": { "type": "boolean" }, + "log_recovery_conflict_waits": { "type": "boolean" }, + "log_replication_commands": { "type": "boolean" }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { "type": "string" }, "maintenance_work_mem": { "type": "string" }, "track_activity_query_size": { "type": "string" }, "max_connections": { "type": "integer", "minimum": 1, "maximum": 262143 }, diff --git a/apps/docs/spec/api_v2_openapi.json b/apps/docs/spec/api_v2_openapi.json index 464289a5721..a576b8f8cf3 100644 --- a/apps/docs/spec/api_v2_openapi.json +++ b/apps/docs/spec/api_v2_openapi.json @@ -265,6 +265,135 @@ "tags": ["Projects"], "x-endpoint-owners": ["management-api"] } + }, + "/v2/organizations/{slug}/members": { + "get": { + "description": "Returns a cursor-paginated list of organization members including their roles and project-scoped permissions.", + "operationId": "v2-list-organization-members", + "parameters": [ + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { + "pattern": "^[\\w-]+$", + "example": "tsrqponmlkjihgfedcba", + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "properties": { + "size": { "type": "integer", "minimum": 1, "maximum": 100, "required": false }, + "after": { "type": "string", "format": "uuid", "required": false }, + "before": { "type": "string", "format": "uuid", "required": false } + }, + "type": "object" + } + }, + { + "name": "filter", + "required": false, + "in": "query", + "schema": { + "properties": { + "username": { "type": "string", "required": false }, + "primary_email": { "type": "string", "format": "email", "required": false } + }, + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/V2ListMembersResponse" } + } + } + }, + "401": { "description": "Unauthorized" }, + "403": { "description": "Forbidden action" }, + "429": { "description": "Rate limit exceeded" } + }, + "security": [{ "bearer": [] }, { "fga_permissions": ["members_read"] }], + "summary": "List members of an organization", + "tags": ["Organizations"], + "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], + "x-endpoint-owners": ["management-api"], + "x-oauth-scope": "organizations:read" + } + }, + "/v2/organizations/{slug}/roles": { + "get": { + "description": "Returns a cursor-paginated list of organization roles including both org-scoped and project-scoped roles.", + "operationId": "v2-list-organization-roles", + "parameters": [ + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { + "pattern": "^[\\w-]+$", + "example": "tsrqponmlkjihgfedcba", + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "properties": { + "size": { "type": "integer", "minimum": 1, "maximum": 100, "required": false }, + "after": { "type": "string", "required": false }, + "before": { "type": "string", "required": false } + }, + "type": "object" + } + }, + { + "name": "filter", + "required": false, + "in": "query", + "schema": { + "properties": { + "scope": { + "type": "string", + "enum": ["organization", "project"], + "required": false + } + }, + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { "$ref": "#/components/schemas/V2ListRolesResponse" } + } + } + }, + "401": { "description": "Unauthorized" }, + "403": { "description": "Forbidden action" }, + "429": { "description": "Rate limit exceeded" } + }, + "security": [{ "bearer": [] }, { "fga_permissions": ["members_read"] }], + "summary": "List roles of an organization", + "tags": ["Organizations"], + "x-badges": [{ "name": "OAuth scope: organizations:read", "position": "after" }], + "x-endpoint-owners": ["management-api"], + "x-oauth-scope": "organizations:read" + } } }, "info": { @@ -893,6 +1022,195 @@ } }, "required": ["data"] + }, + "V2ListMembersResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["organization_member"], + "description": "Resource type." + }, + "id": { "type": "string", "format": "uuid" }, + "attributes": { + "type": "object", + "properties": { + "username": { + "type": "string", + "nullable": true, + "description": "Member's username" + }, + "primary_email": { + "type": "string", + "nullable": true, + "description": "Member's primary email" + }, + "mfa_enabled": { + "type": "boolean", + "description": "Whether Multi-Factor Authentication is enabled for this member" + }, + "is_sso_user": { + "type": "boolean", + "description": "Whether this member is a Single Sign-On user" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { "type": "integer", "description": "Role ID." }, + "name": { + "type": "string", + "description": "Role name. For project-scoped roles this is the base role name.", + "example": "Developer" + }, + "scope": { + "type": "string", + "enum": ["organization", "project"], + "description": "Whether this role applies org-wide or is scoped to specific projects for the user." + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ref": { "type": "string" }, + "name": { "type": "string" } + }, + "required": ["ref", "name"] + }, + "description": "Project refs this role is scoped to. Empty array for org-level roles." + } + }, + "required": ["id", "name", "scope", "projects"] + }, + "description": "Roles assigned to this member. Includes both org-level and project-scoped roles." + } + }, + "required": ["username", "primary_email", "mfa_enabled", "is_sso_user", "roles"] + } + }, + "required": ["type", "id", "attributes"] + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string", + "nullable": true, + "description": "URL path to the first page if available.", + "example": "/v2/organizations/my-org/members?page[size]=10" + }, + "prev": { + "type": "string", + "nullable": true, + "description": "URL path to the previous page.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[before]=019adf7d-4513-74c5-bb9a-f1bc0f7a95d7" + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL path to the next page.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[after]=019adf7d-4513-7062-b292-78b86cc470a4" + }, + "last": { + "type": "string", + "nullable": true, + "description": "URL path to the last page if available.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[after]=019adf7d-4513-71ba-b264-21900edb4295" + } + }, + "required": ["prev", "next"] + } + }, + "required": ["data", "links"] + }, + "V2ListRolesResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["organization_role"], + "description": "Resource type." + }, + "id": { "type": "string" }, + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Role name. For project-scoped roles this is the base role name.", + "example": "Developer" + }, + "scope": { + "type": "string", + "enum": ["organization", "project"], + "description": "Whether this role applies org-wide or is scoped to specific projects for the user." + }, + "base_role_id": { + "type": "integer", + "nullable": true, + "description": "null for org-level roles; the base role ID for project-scoped roles." + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { "ref": { "type": "string" }, "name": { "type": "string" } }, + "required": ["ref", "name"] + }, + "description": "Project refs this role is scoped to. Empty array for org-level roles." + } + }, + "required": ["name", "scope", "base_role_id", "projects"] + } + }, + "required": ["type", "id", "attributes"] + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string", + "nullable": true, + "description": "URL path to the first page if available.", + "example": "/v2/organizations/my-org/roles?page[size]=10" + }, + "prev": { + "type": "string", + "nullable": true, + "description": "URL path to the previous page.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[before]=019adf7d-4513-74c5-bb9a-f1bc0f7a95d7" + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL path to the next page.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[after]=019adf7d-4513-7062-b292-78b86cc470a4" + }, + "last": { + "type": "string", + "nullable": true, + "description": "URL path to the last page if available.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[after]=019adf7d-4513-71ba-b264-21900edb4295" + } + }, + "required": ["prev", "next"] + } + }, + "required": ["data", "links"] } } } diff --git a/apps/docs/spec/common-api-sections.json b/apps/docs/spec/common-api-sections.json index 6d4aad0cd97..7a4a99f3546 100644 --- a/apps/docs/spec/common-api-sections.json +++ b/apps/docs/spec/common-api-sections.json @@ -735,6 +735,18 @@ "title": "List organization members", "slug": "v1-list-organization-members", "type": "operation" + }, + { + "id": "v2-list-organization-members", + "title": "List organization members", + "slug": "v2-list-organization-members", + "type": "operation" + }, + { + "id": "v2-list-organization-roles", + "title": "List organization roles", + "slug": "v2-list-organization-roles", + "type": "operation" } ] }, diff --git a/apps/docs/spec/storage_v0_openapi.json b/apps/docs/spec/storage_v0_openapi.json index fc13ddcf915..07882b1f82c 100644 --- a/apps/docs/spec/storage_v0_openapi.json +++ b/apps/docs/spec/storage_v0_openapi.json @@ -48,13 +48,20 @@ }, "queryVector": { "type": "object", - "properties": { "float32": { "type": "array", "items": { "type": "number" } } }, + "properties": { + "float32": { "type": "array", "minItems": 1, "items": { "type": "number" } } + }, "required": ["float32"], "additionalProperties": false }, "returnDistance": { "type": "boolean" }, "returnMetadata": { "type": "boolean" }, - "topK": { "type": "number" }, + "topK": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Number of nearest-neighbor results to return, from 1 to 100." + }, "vectorBucketName": { "type": "string" } }, "required": ["vectorBucketName", "indexName", "queryVector", "topK"], @@ -3651,7 +3658,12 @@ "type": "object", "properties": { "dataType": { "type": "string", "enum": ["float32"] }, - "dimension": { "type": "number", "minimum": 1, "maximum": 4096 }, + "dimension": { + "type": "integer", + "minimum": 1, + "maximum": 4096, + "description": "Vector dimensionality. S3 Vectors supports up to 4096. The local pgvector backend supports up to 4000 and will reject larger values." + }, "distanceMetric": { "type": "string", "enum": ["cosine", "euclidean"] }, "indexName": { "type": "string", @@ -3666,7 +3678,10 @@ "properties": { "nonFilterableMetadataKeys": { "type": "array", - "items": { "type": "string" } + "minItems": 1, + "maxItems": 10, + "uniqueItems": true, + "items": { "type": "string", "minLength": 1, "maxLength": 63 } } } }, @@ -3882,23 +3897,41 @@ "data": { "type": "object", "properties": { - "float32": { "type": "array", "items": { "type": "number" } } + "float32": { + "type": "array", + "minItems": 1, + "items": { "type": "number" } + } }, "required": ["float32"] }, "metadata": { "type": "object", "additionalProperties": { - "oneOf": [ - { "type": "string" }, - { "type": "boolean" }, - { "type": "number" } + "anyOf": [ + { + "anyOf": [ + { "type": "string" }, + { "type": "boolean" }, + { "type": "number" } + ] + }, + { + "type": "array", + "items": { + "anyOf": [ + { "type": "string" }, + { "type": "boolean" }, + { "type": "number" } + ] + } + } ] } }, - "key": { "type": "string" } + "key": { "type": "string", "minLength": 1, "maxLength": 1024 } }, - "required": ["data"] + "required": ["data", "key"] } } }, @@ -3936,7 +3969,12 @@ "properties": { "vectorBucketName": { "type": "string" }, "indexName": { "type": "string" }, - "keys": { "type": "array", "items": { "type": "string" } } + "keys": { + "type": "array", + "minItems": 1, + "maxItems": 500, + "items": { "type": "string", "minLength": 1, "maxLength": 1024 } + } }, "required": ["vectorBucketName", "indexName", "keys"] } @@ -3967,12 +4005,12 @@ "pattern": "^[a-z0-9](?:[a-z0-9.-]{1,61})?[a-z0-9]$", "description": "3-63 chars, lowercase letters, numbers, hyphens, dots; must start/end with letter or number. Must be unique within the vector bucket." }, - "maxResults": { "type": "number", "minimum": 1, "maximum": 500 }, + "maxResults": { "type": "integer", "minimum": 1, "maximum": 1000 }, "nextToken": { "type": "string" }, "returnData": { "type": "boolean" }, "returnMetadata": { "type": "boolean" }, - "segmentCount": { "type": "number", "minimum": 1, "maximum": 16 }, - "segmentIndex": { "type": "number", "minimum": 0, "maximum": 15 } + "segmentCount": { "type": "integer", "minimum": 1, "maximum": 16 }, + "segmentIndex": { "type": "integer", "minimum": 0, "maximum": 15 } }, "required": ["vectorBucketName", "indexName"] } @@ -3995,7 +4033,12 @@ "type": "object", "properties": { "indexName": { "type": "string" }, - "keys": { "type": "array", "items": { "type": "string" } }, + "keys": { + "type": "array", + "minItems": 1, + "maxItems": 100, + "items": { "type": "string", "minLength": 1, "maxLength": 1024 } + }, "returnData": { "type": "boolean", "default": false }, "returnMetadata": { "type": "boolean", "default": false }, "vectorBucketName": { "type": "string" } diff --git a/apps/docs/spec/transforms/api_v1_openapi_deparsed.json b/apps/docs/spec/transforms/api_v1_openapi_deparsed.json index 0205bf7586a..86574996f4d 100644 --- a/apps/docs/spec/transforms/api_v1_openapi_deparsed.json +++ b/apps/docs/spec/transforms/api_v1_openapi_deparsed.json @@ -1858,6 +1858,7 @@ }, "/v1/oauth/token": { "post": { + "description": "Supports `authorization_code`, `refresh_token`, and `urn:ietf:params:oauth:grant-type:jwt-bearer` grant types. The `jwt-bearer` grant type (IDJAG — identity-directed JWT assertion) is in beta and available on Team and Enterprise plans only.", "operationId": "v1-exchange-oauth-token", "parameters": [], "requestBody": { @@ -1869,7 +1870,11 @@ "properties": { "grant_type": { "type": "string", - "enum": ["authorization_code", "refresh_token"] + "enum": [ + "authorization_code", + "refresh_token", + "urn:ietf:params:oauth:grant-type:jwt-bearer" + ] }, "client_id": { "type": "string", @@ -1890,6 +1895,10 @@ "refresh_token": { "type": "string" }, + "assertion": { + "type": "string", + "description": "IDJAG assertion JWT for grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer. Beta - available on Team and Enterprise plans only." + }, "resource": { "type": "string", "format": "uri", @@ -1925,7 +1934,8 @@ "type": "string" }, "refresh_token": { - "type": "string" + "type": "string", + "description": "The `urn:ietf:params:oauth:grant-type:jwt-bearer` grant type issues access tokens only, no refresh token is returned and the token cannot be revoked via `/v1/oauth/revoke`." }, "expires_in": { "type": "integer" @@ -1935,7 +1945,7 @@ "enum": ["Bearer"] } }, - "required": ["access_token", "refresh_token", "expires_in", "token_type"], + "required": ["access_token", "expires_in", "token_type"], "additionalProperties": false } } @@ -19469,6 +19479,43 @@ "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { + "type": "boolean" + }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { + "type": "boolean" + }, + "log_connections": { + "type": "boolean" + }, + "log_disconnections": { + "type": "boolean" + }, + "log_duration": { + "type": "boolean" + }, + "log_lock_waits": { + "type": "boolean" + }, + "log_recovery_conflict_waits": { + "type": "boolean" + }, + "log_replication_commands": { + "type": "boolean" + }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { + "type": "string" + }, "maintenance_work_mem": { "type": "string" }, @@ -19624,6 +19671,43 @@ "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { + "type": "boolean" + }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { + "type": "boolean" + }, + "log_connections": { + "type": "boolean" + }, + "log_disconnections": { + "type": "boolean" + }, + "log_duration": { + "type": "boolean" + }, + "log_lock_waits": { + "type": "boolean" + }, + "log_recovery_conflict_waits": { + "type": "boolean" + }, + "log_replication_commands": { + "type": "boolean" + }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { + "type": "string" + }, "maintenance_work_mem": { "type": "string" }, @@ -19741,6 +19825,43 @@ "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { + "type": "boolean" + }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { + "type": "boolean" + }, + "log_connections": { + "type": "boolean" + }, + "log_disconnections": { + "type": "boolean" + }, + "log_duration": { + "type": "boolean" + }, + "log_lock_waits": { + "type": "boolean" + }, + "log_recovery_conflict_waits": { + "type": "boolean" + }, + "log_replication_commands": { + "type": "boolean" + }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { + "type": "string" + }, "maintenance_work_mem": { "type": "string" }, @@ -23558,7 +23679,11 @@ "properties": { "grant_type": { "type": "string", - "enum": ["authorization_code", "refresh_token"] + "enum": [ + "authorization_code", + "refresh_token", + "urn:ietf:params:oauth:grant-type:jwt-bearer" + ] }, "client_id": { "type": "string", @@ -23579,6 +23704,10 @@ "refresh_token": { "type": "string" }, + "assertion": { + "type": "string", + "description": "IDJAG assertion JWT for grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer. Beta - available on Team and Enterprise plans only." + }, "resource": { "type": "string", "format": "uri", @@ -23606,7 +23735,8 @@ "type": "string" }, "refresh_token": { - "type": "string" + "type": "string", + "description": "The `urn:ietf:params:oauth:grant-type:jwt-bearer` grant type issues access tokens only, no refresh token is returned and the token cannot be revoked via `/v1/oauth/revoke`." }, "expires_in": { "type": "integer" @@ -23616,7 +23746,7 @@ "enum": ["Bearer"] } }, - "required": ["access_token", "refresh_token", "expires_in", "token_type"], + "required": ["access_token", "expires_in", "token_type"], "additionalProperties": false }, "OAuthRevokeTokenBody": { @@ -30021,6 +30151,43 @@ "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { + "type": "boolean" + }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { + "type": "boolean" + }, + "log_connections": { + "type": "boolean" + }, + "log_disconnections": { + "type": "boolean" + }, + "log_duration": { + "type": "boolean" + }, + "log_lock_waits": { + "type": "boolean" + }, + "log_recovery_conflict_waits": { + "type": "boolean" + }, + "log_replication_commands": { + "type": "boolean" + }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { + "type": "string" + }, "maintenance_work_mem": { "type": "string" }, @@ -30120,6 +30287,43 @@ "logical_decoding_work_mem": { "type": "string" }, + "cron.log_statement": { + "type": "boolean" + }, + "log_autovacuum_min_duration": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_checkpoints": { + "type": "boolean" + }, + "log_connections": { + "type": "boolean" + }, + "log_disconnections": { + "type": "boolean" + }, + "log_duration": { + "type": "boolean" + }, + "log_lock_waits": { + "type": "boolean" + }, + "log_recovery_conflict_waits": { + "type": "boolean" + }, + "log_replication_commands": { + "type": "boolean" + }, + "log_startup_progress_interval": { + "type": "string", + "description": "Default unit: ms", + "pattern": "^(-?[0-9]+(?:\\.[0-9]+)?)(us|ms|s|min|h|d)?$" + }, + "log_temp_files": { + "type": "string" + }, "maintenance_work_mem": { "type": "string" }, diff --git a/apps/docs/spec/transforms/api_v2_openapi_deparsed.json b/apps/docs/spec/transforms/api_v2_openapi_deparsed.json index 3e430f5e530..45e90da5d75 100644 --- a/apps/docs/spec/transforms/api_v2_openapi_deparsed.json +++ b/apps/docs/spec/transforms/api_v2_openapi_deparsed.json @@ -1581,6 +1581,414 @@ "tags": ["Projects"], "x-endpoint-owners": ["management-api"] } + }, + "/v2/organizations/{slug}/members": { + "get": { + "description": "Returns a cursor-paginated list of organization members including their roles and project-scoped permissions.", + "operationId": "v2-list-organization-members", + "parameters": [ + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { + "pattern": "^[\\w-]+$", + "example": "tsrqponmlkjihgfedcba", + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "properties": { + "size": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "required": false + }, + "after": { + "type": "string", + "format": "uuid", + "required": false + }, + "before": { + "type": "string", + "format": "uuid", + "required": false + } + }, + "type": "object" + } + }, + { + "name": "filter", + "required": false, + "in": "query", + "schema": { + "properties": { + "username": { + "type": "string", + "required": false + }, + "primary_email": { + "type": "string", + "format": "email", + "required": false + } + }, + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["organization_member"], + "description": "Resource type." + }, + "id": { + "type": "string", + "format": "uuid" + }, + "attributes": { + "type": "object", + "properties": { + "username": { + "type": "string", + "nullable": true, + "description": "Member's username" + }, + "primary_email": { + "type": "string", + "nullable": true, + "description": "Member's primary email" + }, + "mfa_enabled": { + "type": "boolean", + "description": "Whether Multi-Factor Authentication is enabled for this member" + }, + "is_sso_user": { + "type": "boolean", + "description": "Whether this member is a Single Sign-On user" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Role ID." + }, + "name": { + "type": "string", + "description": "Role name. For project-scoped roles this is the base role name.", + "example": "Developer" + }, + "scope": { + "type": "string", + "enum": ["organization", "project"], + "description": "Whether this role applies org-wide or is scoped to specific projects for the user." + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ref": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["ref", "name"] + }, + "description": "Project refs this role is scoped to. Empty array for org-level roles." + } + }, + "required": ["id", "name", "scope", "projects"] + }, + "description": "Roles assigned to this member. Includes both org-level and project-scoped roles." + } + }, + "required": [ + "username", + "primary_email", + "mfa_enabled", + "is_sso_user", + "roles" + ] + } + }, + "required": ["type", "id", "attributes"] + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string", + "nullable": true, + "description": "URL path to the first page if available.", + "example": "/v2/organizations/my-org/members?page[size]=10" + }, + "prev": { + "type": "string", + "nullable": true, + "description": "URL path to the previous page.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[before]=019adf7d-4513-74c5-bb9a-f1bc0f7a95d7" + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL path to the next page.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[after]=019adf7d-4513-7062-b292-78b86cc470a4" + }, + "last": { + "type": "string", + "nullable": true, + "description": "URL path to the last page if available.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[after]=019adf7d-4513-71ba-b264-21900edb4295" + } + }, + "required": ["prev", "next"] + } + }, + "required": ["data", "links"] + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden action" + }, + "429": { + "description": "Rate limit exceeded" + } + }, + "security": [ + { + "bearer": [] + }, + { + "fga_permissions": ["members_read"] + } + ], + "summary": "List members of an organization", + "tags": ["Organizations"], + "x-badges": [ + { + "name": "OAuth scope: organizations:read", + "position": "after" + } + ], + "x-endpoint-owners": ["management-api"], + "x-oauth-scope": "organizations:read" + } + }, + "/v2/organizations/{slug}/roles": { + "get": { + "description": "Returns a cursor-paginated list of organization roles including both org-scoped and project-scoped roles.", + "operationId": "v2-list-organization-roles", + "parameters": [ + { + "name": "slug", + "required": true, + "in": "path", + "description": "Organization slug", + "schema": { + "pattern": "^[\\w-]+$", + "example": "tsrqponmlkjihgfedcba", + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "schema": { + "properties": { + "size": { + "type": "integer", + "minimum": 1, + "maximum": 100, + "required": false + }, + "after": { + "type": "string", + "required": false + }, + "before": { + "type": "string", + "required": false + } + }, + "type": "object" + } + }, + { + "name": "filter", + "required": false, + "in": "query", + "schema": { + "properties": { + "scope": { + "type": "string", + "enum": ["organization", "project"], + "required": false + } + }, + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["organization_role"], + "description": "Resource type." + }, + "id": { + "type": "string" + }, + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Role name. For project-scoped roles this is the base role name.", + "example": "Developer" + }, + "scope": { + "type": "string", + "enum": ["organization", "project"], + "description": "Whether this role applies org-wide or is scoped to specific projects for the user." + }, + "base_role_id": { + "type": "integer", + "nullable": true, + "description": "null for org-level roles; the base role ID for project-scoped roles." + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ref": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["ref", "name"] + }, + "description": "Project refs this role is scoped to. Empty array for org-level roles." + } + }, + "required": ["name", "scope", "base_role_id", "projects"] + } + }, + "required": ["type", "id", "attributes"] + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string", + "nullable": true, + "description": "URL path to the first page if available.", + "example": "/v2/organizations/my-org/roles?page[size]=10" + }, + "prev": { + "type": "string", + "nullable": true, + "description": "URL path to the previous page.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[before]=019adf7d-4513-74c5-bb9a-f1bc0f7a95d7" + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL path to the next page.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[after]=019adf7d-4513-7062-b292-78b86cc470a4" + }, + "last": { + "type": "string", + "nullable": true, + "description": "URL path to the last page if available.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[after]=019adf7d-4513-71ba-b264-21900edb4295" + } + }, + "required": ["prev", "next"] + } + }, + "required": ["data", "links"] + } + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden action" + }, + "429": { + "description": "Rate limit exceeded" + } + }, + "security": [ + { + "bearer": [] + }, + { + "fga_permissions": ["members_read"] + } + ], + "summary": "List roles of an organization", + "tags": ["Organizations"], + "x-badges": [ + { + "name": "OAuth scope: organizations:read", + "position": "after" + } + ], + "x-endpoint-owners": ["management-api"], + "x-oauth-scope": "organizations:read" + } } }, "components": { @@ -2545,6 +2953,214 @@ } }, "required": ["data"] + }, + "V2ListMembersResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["organization_member"], + "description": "Resource type." + }, + "id": { + "type": "string", + "format": "uuid" + }, + "attributes": { + "type": "object", + "properties": { + "username": { + "type": "string", + "nullable": true, + "description": "Member's username" + }, + "primary_email": { + "type": "string", + "nullable": true, + "description": "Member's primary email" + }, + "mfa_enabled": { + "type": "boolean", + "description": "Whether Multi-Factor Authentication is enabled for this member" + }, + "is_sso_user": { + "type": "boolean", + "description": "Whether this member is a Single Sign-On user" + }, + "roles": { + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "description": "Role ID." + }, + "name": { + "type": "string", + "description": "Role name. For project-scoped roles this is the base role name.", + "example": "Developer" + }, + "scope": { + "type": "string", + "enum": ["organization", "project"], + "description": "Whether this role applies org-wide or is scoped to specific projects for the user." + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ref": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["ref", "name"] + }, + "description": "Project refs this role is scoped to. Empty array for org-level roles." + } + }, + "required": ["id", "name", "scope", "projects"] + }, + "description": "Roles assigned to this member. Includes both org-level and project-scoped roles." + } + }, + "required": ["username", "primary_email", "mfa_enabled", "is_sso_user", "roles"] + } + }, + "required": ["type", "id", "attributes"] + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string", + "nullable": true, + "description": "URL path to the first page if available.", + "example": "/v2/organizations/my-org/members?page[size]=10" + }, + "prev": { + "type": "string", + "nullable": true, + "description": "URL path to the previous page.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[before]=019adf7d-4513-74c5-bb9a-f1bc0f7a95d7" + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL path to the next page.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[after]=019adf7d-4513-7062-b292-78b86cc470a4" + }, + "last": { + "type": "string", + "nullable": true, + "description": "URL path to the last page if available.", + "example": "/v2/organizations/my-org/members?page[size]=10&page[after]=019adf7d-4513-71ba-b264-21900edb4295" + } + }, + "required": ["prev", "next"] + } + }, + "required": ["data", "links"] + }, + "V2ListRolesResponse": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "type": { + "type": "string", + "enum": ["organization_role"], + "description": "Resource type." + }, + "id": { + "type": "string" + }, + "attributes": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Role name. For project-scoped roles this is the base role name.", + "example": "Developer" + }, + "scope": { + "type": "string", + "enum": ["organization", "project"], + "description": "Whether this role applies org-wide or is scoped to specific projects for the user." + }, + "base_role_id": { + "type": "integer", + "nullable": true, + "description": "null for org-level roles; the base role ID for project-scoped roles." + }, + "projects": { + "type": "array", + "items": { + "type": "object", + "properties": { + "ref": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": ["ref", "name"] + }, + "description": "Project refs this role is scoped to. Empty array for org-level roles." + } + }, + "required": ["name", "scope", "base_role_id", "projects"] + } + }, + "required": ["type", "id", "attributes"] + } + }, + "links": { + "type": "object", + "properties": { + "first": { + "type": "string", + "nullable": true, + "description": "URL path to the first page if available.", + "example": "/v2/organizations/my-org/roles?page[size]=10" + }, + "prev": { + "type": "string", + "nullable": true, + "description": "URL path to the previous page.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[before]=019adf7d-4513-74c5-bb9a-f1bc0f7a95d7" + }, + "next": { + "type": "string", + "nullable": true, + "description": "URL path to the next page.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[after]=019adf7d-4513-7062-b292-78b86cc470a4" + }, + "last": { + "type": "string", + "nullable": true, + "description": "URL path to the last page if available.", + "example": "/v2/organizations/my-org/roles?page[size]=10&page[after]=019adf7d-4513-71ba-b264-21900edb4295" + } + }, + "required": ["prev", "next"] + } + }, + "required": ["data", "links"] } } } diff --git a/apps/docs/spec/transforms/storage_v0_openapi_deparsed.json b/apps/docs/spec/transforms/storage_v0_openapi_deparsed.json index 3c96c360baf..4bdc7df2177 100644 --- a/apps/docs/spec/transforms/storage_v0_openapi_deparsed.json +++ b/apps/docs/spec/transforms/storage_v0_openapi_deparsed.json @@ -6245,9 +6245,10 @@ "enum": ["float32"] }, "dimension": { - "type": "number", + "type": "integer", "minimum": 1, - "maximum": 4096 + "maximum": 4096, + "description": "Vector dimensionality. S3 Vectors supports up to 4096. The local pgvector backend supports up to 4000 and will reject larger values." }, "distanceMetric": { "type": "string", @@ -6266,8 +6267,13 @@ "properties": { "nonFilterableMetadataKeys": { "type": "array", + "minItems": 1, + "maxItems": 10, + "uniqueItems": true, "items": { - "type": "string" + "type": "string", + "minLength": 1, + "maxLength": 63 } } } @@ -6590,6 +6596,7 @@ "properties": { "float32": { "type": "array", + "minItems": 1, "items": { "type": "number" } @@ -6600,24 +6607,46 @@ "metadata": { "type": "object", "additionalProperties": { - "oneOf": [ + "anyOf": [ { - "type": "string" + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "number" + } + ] }, { - "type": "boolean" - }, - { - "type": "number" + "type": "array", + "items": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "boolean" + }, + { + "type": "number" + } + ] + } } ] } }, "key": { - "type": "string" + "type": "string", + "minLength": 1, + "maxLength": 1024 } }, - "required": ["data"] + "required": ["data", "key"] } } }, @@ -6668,6 +6697,7 @@ "properties": { "float32": { "type": "array", + "minItems": 1, "items": { "type": "number" } @@ -6683,7 +6713,10 @@ "type": "boolean" }, "topK": { - "type": "number" + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Number of nearest-neighbor results to return, from 1 to 100." }, "vectorBucketName": { "type": "string" @@ -6727,8 +6760,12 @@ }, "keys": { "type": "array", + "minItems": 1, + "maxItems": 500, "items": { - "type": "string" + "type": "string", + "minLength": 1, + "maxLength": 1024 } } }, @@ -6774,9 +6811,9 @@ "description": "3-63 chars, lowercase letters, numbers, hyphens, dots; must start/end with letter or number. Must be unique within the vector bucket." }, "maxResults": { - "type": "number", + "type": "integer", "minimum": 1, - "maximum": 500 + "maximum": 1000 }, "nextToken": { "type": "string" @@ -6788,12 +6825,12 @@ "type": "boolean" }, "segmentCount": { - "type": "number", + "type": "integer", "minimum": 1, "maximum": 16 }, "segmentIndex": { - "type": "number", + "type": "integer", "minimum": 0, "maximum": 15 } @@ -6831,8 +6868,12 @@ }, "keys": { "type": "array", + "minItems": 1, + "maxItems": 100, "items": { - "type": "string" + "type": "string", + "minLength": 1, + "maxLength": 1024 } }, "returnData": { @@ -6923,6 +6964,7 @@ "properties": { "float32": { "type": "array", + "minItems": 1, "items": { "type": "number" } @@ -6938,7 +6980,10 @@ "type": "boolean" }, "topK": { - "type": "number" + "type": "integer", + "minimum": 1, + "maximum": 100, + "description": "Number of nearest-neighbor results to return, from 1 to 100." }, "vectorBucketName": { "type": "string"