diff --git a/client-sdks/stainless/openapi.yml b/client-sdks/stainless/openapi.yml index 06e361debc..0f38cd5a04 100644 --- a/client-sdks/stainless/openapi.yml +++ b/client-sdks/stainless/openapi.yml @@ -2981,18 +2981,12 @@ paths: required: false schema: anyOf: - - type: string - enum: - - completed - - type: string - enum: + - enum: - in_progress - - type: string - enum: + - completed - cancelled - - type: string - enum: - failed + type: string - type: 'null' description: Filter by file status. title: Filter @@ -10335,26 +10329,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListResponse description: Response from listing vector stores. VectorStoreObject: @@ -10365,14 +10360,15 @@ components: object: type: string title: Object - default: vector_store + enum: + - vector_store created_at: type: integer title: Created At name: - anyOf: - - type: string - - type: 'null' + type: string + title: Name + default: '' usage_bytes: type: integer title: Usage Bytes @@ -10381,13 +10377,17 @@ components: $ref: '#/components/schemas/VectorStoreFileCounts' status: type: string + enum: + - expired + - in_progress + - completed title: Status - default: completed expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter expires_at: anyOf: - type: integer @@ -10397,13 +10397,15 @@ components: - type: integer - type: 'null' metadata: - additionalProperties: true - type: object - title: Metadata + anyOf: + - additionalProperties: true + type: object + - type: 'null' required: - id - created_at - file_counts + - status title: VectorStoreObject description: OpenAI Vector Store object. VectorStoreChunkingStrategy: @@ -10463,6 +10465,10 @@ components: anyOf: - type: string - type: 'null' + description: + anyOf: + - type: string + - type: 'null' file_ids: anyOf: - items: @@ -10471,9 +10477,10 @@ components: - type: 'null' expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - oneOf: @@ -10508,13 +10515,14 @@ components: object: type: string title: Object - default: vector_store.deleted + enum: + - vector_store.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreDeleteResponse description: Response from deleting a vector store. OpenAICreateVectorStoreFileBatchRequestWithExtraBody: @@ -10524,10 +10532,28 @@ components: type: string type: array title: File Ids + files: + anyOf: + - items: + $ref: '#/components/schemas/VectorStoreFileBatchFileEntry' + type: array + - type: 'null' attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' chunking_strategy: anyOf: @@ -10548,8 +10574,6 @@ components: - type: 'null' title: Chunking Strategy additionalProperties: true - required: - - file_ids title: OpenAICreateVectorStoreFileBatchRequestWithExtraBody description: Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: @@ -10560,7 +10584,8 @@ components: object: type: string title: Object - default: vector_store.file_batch + enum: + - vector_store.file_batch created_at: type: integer title: Created At @@ -10568,20 +10593,13 @@ components: type: string title: Vector Store Id status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status file_counts: $ref: '#/components/schemas/VectorStoreFileCounts' required: @@ -10593,31 +10611,21 @@ components: title: VectorStoreFileBatchObject description: OpenAI Vector Store File Batch object. VectorStoreFileStatus: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + enum: + - in_progress + - completed + - cancelled + - failed + type: string VectorStoreFileLastError: properties: code: - anyOf: - - type: string - enum: - - server_error - - type: string - enum: - - rate_limit_exceeded - title: string + type: string + enum: + - server_error + - unsupported_file + - invalid_file + title: Code message: type: string title: Message @@ -10634,23 +10642,25 @@ components: object: type: string title: Object - default: vector_store.file + enum: + - vector_store.file attributes: - additionalProperties: - anyOf: - - type: string - maxLength: 512 - - type: number - - type: boolean - title: string | number | boolean - propertyNames: - type: string - maxLength: 64 - type: object - maxProperties: 16 - title: Attributes - description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. - x-oaiTypeLabel: map + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' chunking_strategy: oneOf: - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' @@ -10676,20 +10686,13 @@ components: - type: 'null' title: VectorStoreFileLastError status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status usage_bytes: type: integer title: Usage Bytes @@ -10710,26 +10713,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreFilesListInBatchResponse description: Response from listing files in a vector store file batch. VectorStoreListFilesResponse: @@ -10737,26 +10741,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListFilesResponse description: Response from listing files in a vector store. VectorStoreFileDeleteResponse: @@ -10767,13 +10772,14 @@ components: object: type: string title: Object - default: vector_store.file.deleted + enum: + - vector_store.file.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreFileDeleteResponse description: Response from deleting a vector store file. VectorStoreContent: @@ -10823,13 +10829,13 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string - type: 'null' required: - data + - has_more title: VectorStoreFileContentResponse description: Represents the parsed content of a vector store file. VectorStoreSearchResponse: @@ -10870,7 +10876,8 @@ components: object: type: string title: Object - default: vector_store.search_results.page + enum: + - vector_store.search_results.page search_query: items: type: string @@ -10884,7 +10891,6 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string @@ -10892,6 +10898,7 @@ components: required: - search_query - data + - has_more title: VectorStoreSearchResponsePage description: Paginated response from searching a vector store. VersionInfo: @@ -12507,8 +12514,20 @@ components: description: The ID of the file to attach. attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' description: Attributes to associate with the file. chunking_strategy: @@ -13169,9 +13188,10 @@ components: - type: 'null' description: Filters to apply to the search. max_num_results: - anyOf: - - type: integer - - type: 'null' + type: integer + maximum: 50.0 + minimum: 1.0 + title: Max Num Results description: Maximum number of results to return. default: 10 ranking_options: @@ -13182,9 +13202,8 @@ components: description: Options for ranking results. title: SearchRankingOptions rewrite_query: - anyOf: - - type: boolean - - type: 'null' + type: boolean + title: Rewrite Query description: Whether to rewrite the query for better results. default: false search_mode: @@ -13217,10 +13236,11 @@ components: description: The new name for the vector store. expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' description: Expiration policy for the vector store. + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -13532,6 +13552,69 @@ components: description: Maximum concurrent LLM calls. Falls back to config default if not provided. title: VectorStoreChunkingStrategyContextualConfig description: Configuration for contextual chunking that uses an LLM to situate chunks within the document. + VectorStoreExpirationAfter: + properties: + anchor: + type: string + title: Anchor + description: Anchor timestamp after which the expiration policy applies. + enum: + - last_active_at + days: + type: integer + maximum: 365.0 + minimum: 1.0 + title: Days + description: The number of days after the anchor time that the vector store will expire. + required: + - anchor + - days + title: VectorStoreExpirationAfter + description: Expiration policy for a vector store. + VectorStoreFileBatchFileEntry: + properties: + file_id: + type: string + title: File Id + chunking_strategy: + anyOf: + - oneOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + title: VectorStoreChunkingStrategyAuto + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyStatic + - $ref: '#/components/schemas/VectorStoreChunkingStrategyContextual' + title: VectorStoreChunkingStrategyContextual + discriminator: + propertyName: type + mapping: + auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' + contextual: '#/components/schemas/VectorStoreChunkingStrategyContextual' + static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyAuto | VectorStoreChunkingStrategyStatic | VectorStoreChunkingStrategyContextual + - type: 'null' + title: Chunking Strategy + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' + required: + - file_id + title: VectorStoreFileBatchFileEntry + description: A file entry for creating a vector store file batch with per-file options. _URLOrData: properties: url: @@ -13717,6 +13800,12 @@ components: - content_filter - function_call type: string + VectorStoreStatus: + enum: + - expired + - in_progress + - completed + type: string OpenAIResponseInputToolChoice: anyOf: - $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode' @@ -14637,6 +14726,11 @@ components: - type: string - type: 'null' nullable: true + description: + anyOf: + - type: string + - type: 'null' + nullable: true file_ids: items: type: string @@ -14644,10 +14738,11 @@ components: type: array expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - additionalProperties: true @@ -14655,9 +14750,11 @@ components: - type: 'null' nullable: true metadata: - additionalProperties: true - title: Metadata - type: object + anyOf: + - additionalProperties: true + type: object + - type: 'null' + nullable: true title: VectorStoreCreateRequest VectorStoreModifyRequest: description: Request to modify a vector store. @@ -14669,10 +14766,11 @@ components: nullable: true expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -14699,6 +14797,8 @@ components: nullable: true max_num_results: default: 10 + maximum: 50 + minimum: 1 title: Max Num Results type: integer ranking_options: diff --git a/docs/docs/api-openai/conformance.mdx b/docs/docs/api-openai/conformance.mdx index 345e8e12b8..da9b4db0bf 100644 --- a/docs/docs/api-openai/conformance.mdx +++ b/docs/docs/api-openai/conformance.mdx @@ -18,12 +18,12 @@ This documentation is auto-generated from the OpenAI API specification compariso | Metric | Value | |--------|-------| -| **Overall Conformance Score** | 87.9% | +| **Overall Conformance Score** | 89.3% | | **Endpoints Implemented** | 28/146 | | **Total Properties Checked** | 3441 | -| **Schema/Type Issues** | 288 | -| **Missing Properties** | 130 | -| **Total Issues to Fix** | 418 | +| **Schema/Type Issues** | 239 | +| **Missing Properties** | 128 | +| **Total Issues to Fix** | 367 | ## Integration Test Coverage @@ -47,10 +47,10 @@ Categories are sorted by conformance score (lowest first, needing most attention | Moderations | 15.1% | 53 | 6 | 39 | | Batch | 39.3% | 168 | 61 | 41 | | Completions | 56.5% | 46 | 18 | 2 | -| Vector stores | 61.3% | 310 | 106 | 14 | | Embeddings | 64.3% | 14 | 5 | 0 | | Files | 66.7% | 42 | 8 | 6 | | Models | 66.7% | 15 | 0 | 5 | +| Vector stores | 77.7% | 310 | 57 | 12 | | Chat | 87.1% | 403 | 33 | 19 | | Responses | 87.1% | 225 | 29 | 0 | | Conversations | 98.8% | 2165 | 22 | 4 | @@ -508,9 +508,123 @@ Below is a detailed breakdown of conformance issues and missing properties for e +### Embeddings + +**Score:** 64.3% · **Issues:** 5 · **Missing:** 0 + +#### `/embeddings` + +**POST** + +
+Schema Issues (5) + +| Property | Issues | +|----------|--------| +| `requestBody.content.application/json.properties.input` | Union variants added: 4 | +| `requestBody.content.application/json.properties.model` | Type added: ['string']; Union variants removed: 2 | +| `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | +| `responses.200.content.application/json.properties.data.items.properties.embedding` | Type removed: ['array']; Union variants added: 2 | +| `responses.200.content.application/json.properties.usage` | Type removed: ['object'] | + +
+ +### Files + +**Score:** 66.7% · **Issues:** 8 · **Missing:** 6 + +#### `/files` + +**GET** + +
+Schema Issues (2) + +| Property | Issues | +|----------|--------| +| `responses.200.content.application/json.properties.data.items.properties.expires_at` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | +| `responses.200.content.application/json.properties.data.items.properties.purpose` | Enum values removed: ['assistants_output', 'batch_output', 'fine-tune', 'fine-tune-results', 'vision', 'user_data'] | + +
+ +**POST** + +
+Missing Properties (4) + +- `requestBody.content.multipart/form-data.properties.expires_after.properties.anchor` +- `requestBody.content.multipart/form-data.properties.expires_after.properties.seconds` +- `responses.200.content.application/json.properties.status` +- `responses.200.content.application/json.properties.status_details` + +
+ +
+Schema Issues (4) + +| Property | Issues | +|----------|--------| +| `requestBody.content.multipart/form-data.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | +| `requestBody.content.multipart/form-data.properties.purpose` | Enum values removed: ['fine-tune', 'vision', 'user_data', 'evals'] | +| `responses.200.content.application/json.properties.expires_at` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | +| `responses.200.content.application/json.properties.purpose` | Enum values removed: ['assistants_output', 'batch_output', 'fine-tune', 'fine-tune-results', 'vision', 'user_data'] | + +
+ +#### `/files/{file_id}` + +**GET** + +
+Missing Properties (2) + +- `responses.200.content.application/json.properties.status` +- `responses.200.content.application/json.properties.status_details` + +
+ +
+Schema Issues (2) + +| Property | Issues | +|----------|--------| +| `responses.200.content.application/json.properties.expires_at` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | +| `responses.200.content.application/json.properties.purpose` | Enum values removed: ['assistants_output', 'batch_output', 'fine-tune', 'fine-tune-results', 'vision', 'user_data'] | + +
+ +### Models + +**Score:** 66.7% · **Issues:** 0 · **Missing:** 5 + +#### `/models` + +**GET** + +
+Missing Properties (1) + +- `responses.200.content.application/json.properties.object` + +
+ +#### `/models/{model}` + +**GET** + +
+Missing Properties (4) + +- `responses.200.content.application/json.properties.created` +- `responses.200.content.application/json.properties.id` +- `responses.200.content.application/json.properties.object` +- `responses.200.content.application/json.properties.owned_by` + +
+ ### Vector stores -**Score:** 61.3% · **Issues:** 106 · **Missing:** 14 +**Score:** 77.7% · **Issues:** 57 · **Missing:** 12 #### `/vector_stores` @@ -525,31 +639,23 @@ Below is a detailed breakdown of conformance issues and missing properties for e
-Schema Issues (12) +Schema Issues (5) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | | `responses.200.content.application/json.properties.data.items.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | | `responses.200.content.application/json.properties.data.items.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.data.items.properties.metadata` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | -| `responses.200.content.application/json.properties.data.items.properties.name` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.data.items.properties.object` | Enum removed: ['vector_store']; Default changed: None -> vector_store | -| `responses.200.content.application/json.properties.data.items.properties.status` | Enum removed: ['expired', 'in_progress', 'completed']; Default changed: None -> completed | +| `responses.200.content.application/json.properties.data.items.properties.name` | Default changed: None -> | | `responses.200.content.application/json.properties.data.items.properties.usage_bytes` | Default changed: None -> 0 | -| `responses.200.content.application/json.properties.first_id` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.has_more` | Default changed: None -> False | -| `responses.200.content.application/json.properties.last_id` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.object` | Default changed: None -> list |
**POST**
-Missing Properties (5) +Missing Properties (4) -- `requestBody.content.application/json.properties.description` - `requestBody.content.application/json.properties.expires_after.properties.anchor` - `requestBody.content.application/json.properties.expires_after.properties.days` - `responses.200.content.application/json.properties.expires_after.properties.anchor` @@ -558,38 +664,24 @@ Below is a detailed breakdown of conformance issues and missing properties for e
-Schema Issues (11) +Schema Issues (9) | Property | Issues | |----------|--------| | `requestBody.content.application/json.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 2 | +| `requestBody.content.application/json.properties.description` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `requestBody.content.application/json.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | | `requestBody.content.application/json.properties.file_ids` | Type removed: ['array']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `requestBody.content.application/json.properties.name` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `responses.200.content.application/json.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | | `responses.200.content.application/json.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.metadata` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | -| `responses.200.content.application/json.properties.name` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store']; Default changed: None -> vector_store | -| `responses.200.content.application/json.properties.status` | Enum removed: ['expired', 'in_progress', 'completed']; Default changed: None -> completed | +| `responses.200.content.application/json.properties.name` | Default changed: None -> | | `responses.200.content.application/json.properties.usage_bytes` | Default changed: None -> 0 |
#### `/vector_stores/{vector_store_id}` -**DELETE** - -
-Schema Issues (2) - -| Property | Issues | -|----------|--------| -| `responses.200.content.application/json.properties.deleted` | Default changed: None -> True | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.deleted']; Default changed: None -> vector_store.deleted | - -
- **GET**
@@ -601,16 +693,13 @@ Below is a detailed breakdown of conformance issues and missing properties for e
-Schema Issues (7) +Schema Issues (4) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | | `responses.200.content.application/json.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.metadata` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | -| `responses.200.content.application/json.properties.name` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store']; Default changed: None -> vector_store | -| `responses.200.content.application/json.properties.status` | Enum removed: ['expired', 'in_progress', 'completed']; Default changed: None -> completed | +| `responses.200.content.application/json.properties.name` | Default changed: None -> | | `responses.200.content.application/json.properties.usage_bytes` | Default changed: None -> 0 |
@@ -626,7 +715,7 @@ Below is a detailed breakdown of conformance issues and missing properties for e
-Schema Issues (9) +Schema Issues (6) | Property | Issues | |----------|--------| @@ -634,10 +723,7 @@ Below is a detailed breakdown of conformance issues and missing properties for e | `requestBody.content.application/json.properties.name` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `responses.200.content.application/json.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | | `responses.200.content.application/json.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.metadata` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | -| `responses.200.content.application/json.properties.name` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store']; Default changed: None -> vector_store | -| `responses.200.content.application/json.properties.status` | Enum removed: ['expired', 'in_progress', 'completed']; Default changed: None -> completed | +| `responses.200.content.application/json.properties.name` | Default changed: None -> | | `responses.200.content.application/json.properties.usage_bytes` | Default changed: None -> 0 |
@@ -646,22 +732,15 @@ Below is a detailed breakdown of conformance issues and missing properties for e **POST** -
-Missing Properties (1) - -- `requestBody.content.application/json.properties.files` - -
-
Schema Issues (4) | Property | Issues | |----------|--------| | `requestBody.content.application/json.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 2 | +| `requestBody.content.application/json.properties.files` | Type removed: ['array']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `responses.200.content.application/json.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.files_batch']; Default changed: None -> vector_store.file_batch | -| `responses.200.content.application/json.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | +| `responses.200.content.application/json.properties.object` | Enum values removed: ['vector_store.files_batch'] |
@@ -670,13 +749,12 @@ Below is a detailed breakdown of conformance issues and missing properties for e **GET**
-Schema Issues (3) +Schema Issues (2) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.files_batch']; Default changed: None -> vector_store.file_batch | -| `responses.200.content.application/json.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | +| `responses.200.content.application/json.properties.object` | Enum values removed: ['vector_store.files_batch'] |
@@ -685,13 +763,12 @@ Below is a detailed breakdown of conformance issues and missing properties for e **POST**
-Schema Issues (3) +Schema Issues (2) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.file_counts` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.files_batch']; Default changed: None -> vector_store.file_batch | -| `responses.200.content.application/json.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | +| `responses.200.content.application/json.properties.object` | Enum values removed: ['vector_store.files_batch'] |
@@ -700,21 +777,14 @@ Below is a detailed breakdown of conformance issues and missing properties for e **GET**
-Schema Issues (11) +Schema Issues (4) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.data.items.properties.attributes` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | | `responses.200.content.application/json.properties.data.items.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 3; Union variants removed: 2 | | `responses.200.content.application/json.properties.data.items.properties.last_error` | Union variants added: 1; Union variants removed: 1 | -| `responses.200.content.application/json.properties.data.items.properties.object` | Enum removed: ['vector_store.file']; Default changed: None -> vector_store.file | -| `responses.200.content.application/json.properties.data.items.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | | `responses.200.content.application/json.properties.data.items.properties.usage_bytes` | Default changed: None -> 0 | -| `responses.200.content.application/json.properties.first_id` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.has_more` | Default changed: None -> False | -| `responses.200.content.application/json.properties.last_id` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.object` | Default changed: None -> list |
@@ -723,67 +793,42 @@ Below is a detailed breakdown of conformance issues and missing properties for e **GET**
-Schema Issues (11) +Schema Issues (4) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.data.items.properties.attributes` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | | `responses.200.content.application/json.properties.data.items.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 3; Union variants removed: 2 | | `responses.200.content.application/json.properties.data.items.properties.last_error` | Union variants added: 1; Union variants removed: 1 | -| `responses.200.content.application/json.properties.data.items.properties.object` | Enum removed: ['vector_store.file']; Default changed: None -> vector_store.file | -| `responses.200.content.application/json.properties.data.items.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | | `responses.200.content.application/json.properties.data.items.properties.usage_bytes` | Default changed: None -> 0 | -| `responses.200.content.application/json.properties.first_id` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.has_more` | Default changed: None -> False | -| `responses.200.content.application/json.properties.last_id` | Type removed: ['string']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.object` | Default changed: None -> list |
**POST**
-Schema Issues (7) +Schema Issues (4) | Property | Issues | |----------|--------| | `requestBody.content.application/json.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 2 | -| `responses.200.content.application/json.properties.attributes` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | | `responses.200.content.application/json.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 3; Union variants removed: 2 | | `responses.200.content.application/json.properties.last_error` | Union variants added: 1; Union variants removed: 1 | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.file']; Default changed: None -> vector_store.file | -| `responses.200.content.application/json.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | | `responses.200.content.application/json.properties.usage_bytes` | Default changed: None -> 0 |
#### `/vector_stores/{vector_store_id}/files/{file_id}` -**DELETE** - -
-Schema Issues (2) - -| Property | Issues | -|----------|--------| -| `responses.200.content.application/json.properties.deleted` | Default changed: None -> True | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.file.deleted']; Default changed: None -> vector_store.file.deleted | - -
- **GET**
-Schema Issues (6) +Schema Issues (3) | Property | Issues | |----------|--------| -| `responses.200.content.application/json.properties.attributes` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | | `responses.200.content.application/json.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 3; Union variants removed: 2 | | `responses.200.content.application/json.properties.last_error` | Union variants added: 1; Union variants removed: 1 | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.file']; Default changed: None -> vector_store.file | -| `responses.200.content.application/json.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | | `responses.200.content.application/json.properties.usage_bytes` | Default changed: None -> 0 |
@@ -791,16 +836,13 @@ Below is a detailed breakdown of conformance issues and missing properties for e **POST**
-Schema Issues (7) +Schema Issues (4) | Property | Issues | |----------|--------| | `requestBody.content.application/json.properties.attributes` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | -| `responses.200.content.application/json.properties.attributes` | Type added: ['object']; Nullable removed (OpenAI nullable); Union variants removed: 2 | | `responses.200.content.application/json.properties.chunking_strategy` | Type removed: ['object']; Union variants added: 3; Union variants removed: 2 | | `responses.200.content.application/json.properties.last_error` | Union variants added: 1; Union variants removed: 1 | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.file']; Default changed: None -> vector_store.file | -| `responses.200.content.application/json.properties.status` | Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']; Type removed: ['string']; Union variants added: 4 | | `responses.200.content.application/json.properties.usage_bytes` | Default changed: None -> 0 |
@@ -810,12 +852,11 @@ Below is a detailed breakdown of conformance issues and missing properties for e **GET**
-Schema Issues (2) +Schema Issues (1) | Property | Issues | |----------|--------| | `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.has_more` | Default changed: None -> False |
@@ -832,133 +873,15 @@ Below is a detailed breakdown of conformance issues and missing properties for e
-Schema Issues (9) +Schema Issues (5) | Property | Issues | |----------|--------| | `requestBody.content.application/json.properties.filters` | Union variants added: 2 | -| `requestBody.content.application/json.properties.max_num_results` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `requestBody.content.application/json.properties.query` | Union variants added: 2 | | `requestBody.content.application/json.properties.ranking_options` | Type removed: ['object']; Union variants added: 2 | -| `requestBody.content.application/json.properties.rewrite_query` | Type removed: ['boolean']; Nullable added (OpenAI non-nullable); Union variants added: 2 | | `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | | `responses.200.content.application/json.properties.data.items.properties.content.items` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.has_more` | Default changed: None -> False | -| `responses.200.content.application/json.properties.object` | Enum removed: ['vector_store.search_results.page']; Default changed: None -> vector_store.search_results.page | - -
- -### Embeddings - -**Score:** 64.3% · **Issues:** 5 · **Missing:** 0 - -#### `/embeddings` - -**POST** - -
-Schema Issues (5) - -| Property | Issues | -|----------|--------| -| `requestBody.content.application/json.properties.input` | Union variants added: 4 | -| `requestBody.content.application/json.properties.model` | Type added: ['string']; Union variants removed: 2 | -| `responses.200.content.application/json.properties.data.items` | Type removed: ['object'] | -| `responses.200.content.application/json.properties.data.items.properties.embedding` | Type removed: ['array']; Union variants added: 2 | -| `responses.200.content.application/json.properties.usage` | Type removed: ['object'] | - -
- -### Files - -**Score:** 66.7% · **Issues:** 8 · **Missing:** 6 - -#### `/files` - -**GET** - -
-Schema Issues (2) - -| Property | Issues | -|----------|--------| -| `responses.200.content.application/json.properties.data.items.properties.expires_at` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.data.items.properties.purpose` | Enum values removed: ['assistants_output', 'batch_output', 'fine-tune', 'fine-tune-results', 'vision', 'user_data'] | - -
- -**POST** - -
-Missing Properties (4) - -- `requestBody.content.multipart/form-data.properties.expires_after.properties.anchor` -- `requestBody.content.multipart/form-data.properties.expires_after.properties.seconds` -- `responses.200.content.application/json.properties.status` -- `responses.200.content.application/json.properties.status_details` - -
- -
-Schema Issues (4) - -| Property | Issues | -|----------|--------| -| `requestBody.content.multipart/form-data.properties.expires_after` | Type removed: ['object']; Union variants added: 2 | -| `requestBody.content.multipart/form-data.properties.purpose` | Enum values removed: ['fine-tune', 'vision', 'user_data', 'evals'] | -| `responses.200.content.application/json.properties.expires_at` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.purpose` | Enum values removed: ['assistants_output', 'batch_output', 'fine-tune', 'fine-tune-results', 'vision', 'user_data'] | - -
- -#### `/files/{file_id}` - -**GET** - -
-Missing Properties (2) - -- `responses.200.content.application/json.properties.status` -- `responses.200.content.application/json.properties.status_details` - -
- -
-Schema Issues (2) - -| Property | Issues | -|----------|--------| -| `responses.200.content.application/json.properties.expires_at` | Type removed: ['integer']; Nullable added (OpenAI non-nullable); Union variants added: 2 | -| `responses.200.content.application/json.properties.purpose` | Enum values removed: ['assistants_output', 'batch_output', 'fine-tune', 'fine-tune-results', 'vision', 'user_data'] | - -
- -### Models - -**Score:** 66.7% · **Issues:** 0 · **Missing:** 5 - -#### `/models` - -**GET** - -
-Missing Properties (1) - -- `responses.200.content.application/json.properties.object` - -
- -#### `/models/{model}` - -**GET** - -
-Missing Properties (4) - -- `responses.200.content.application/json.properties.created` -- `responses.200.content.application/json.properties.id` -- `responses.200.content.application/json.properties.object` -- `responses.200.content.application/json.properties.owned_by`
diff --git a/docs/static/deprecated-llama-stack-spec.yaml b/docs/static/deprecated-llama-stack-spec.yaml index 12914642cd..59ee98e0bf 100644 --- a/docs/static/deprecated-llama-stack-spec.yaml +++ b/docs/static/deprecated-llama-stack-spec.yaml @@ -6246,26 +6246,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListResponse description: Response from listing vector stores. VectorStoreObject: @@ -6276,14 +6277,15 @@ components: object: type: string title: Object - default: vector_store + enum: + - vector_store created_at: type: integer title: Created At name: - anyOf: - - type: string - - type: 'null' + type: string + title: Name + default: '' usage_bytes: type: integer title: Usage Bytes @@ -6292,13 +6294,17 @@ components: $ref: '#/components/schemas/VectorStoreFileCounts' status: type: string + enum: + - expired + - in_progress + - completed title: Status - default: completed expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter expires_at: anyOf: - type: integer @@ -6308,13 +6314,15 @@ components: - type: integer - type: 'null' metadata: - additionalProperties: true - type: object - title: Metadata + anyOf: + - additionalProperties: true + type: object + - type: 'null' required: - id - created_at - file_counts + - status title: VectorStoreObject description: OpenAI Vector Store object. VectorStoreChunkingStrategy: @@ -6374,6 +6382,10 @@ components: anyOf: - type: string - type: 'null' + description: + anyOf: + - type: string + - type: 'null' file_ids: anyOf: - items: @@ -6382,9 +6394,10 @@ components: - type: 'null' expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - oneOf: @@ -6419,13 +6432,14 @@ components: object: type: string title: Object - default: vector_store.deleted + enum: + - vector_store.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreDeleteResponse description: Response from deleting a vector store. OpenAICreateVectorStoreFileBatchRequestWithExtraBody: @@ -6435,10 +6449,28 @@ components: type: string type: array title: File Ids + files: + anyOf: + - items: + $ref: '#/components/schemas/VectorStoreFileBatchFileEntry' + type: array + - type: 'null' attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' chunking_strategy: anyOf: @@ -6459,8 +6491,6 @@ components: - type: 'null' title: Chunking Strategy additionalProperties: true - required: - - file_ids title: OpenAICreateVectorStoreFileBatchRequestWithExtraBody description: Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: @@ -6471,7 +6501,8 @@ components: object: type: string title: Object - default: vector_store.file_batch + enum: + - vector_store.file_batch created_at: type: integer title: Created At @@ -6479,20 +6510,13 @@ components: type: string title: Vector Store Id status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status file_counts: $ref: '#/components/schemas/VectorStoreFileCounts' required: @@ -6504,31 +6528,21 @@ components: title: VectorStoreFileBatchObject description: OpenAI Vector Store File Batch object. VectorStoreFileStatus: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + enum: + - in_progress + - completed + - cancelled + - failed + type: string VectorStoreFileLastError: properties: code: - anyOf: - - type: string - enum: - - server_error - - type: string - enum: - - rate_limit_exceeded - title: string + type: string + enum: + - server_error + - unsupported_file + - invalid_file + title: Code message: type: string title: Message @@ -6545,23 +6559,25 @@ components: object: type: string title: Object - default: vector_store.file + enum: + - vector_store.file attributes: - additionalProperties: - anyOf: - - type: string - maxLength: 512 - - type: number - - type: boolean - title: string | number | boolean - propertyNames: - type: string - maxLength: 64 - type: object - maxProperties: 16 - title: Attributes - description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. - x-oaiTypeLabel: map + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' chunking_strategy: oneOf: - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' @@ -6587,20 +6603,13 @@ components: - type: 'null' title: VectorStoreFileLastError status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status usage_bytes: type: integer title: Usage Bytes @@ -6621,26 +6630,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreFilesListInBatchResponse description: Response from listing files in a vector store file batch. VectorStoreListFilesResponse: @@ -6648,26 +6658,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListFilesResponse description: Response from listing files in a vector store. VectorStoreFileDeleteResponse: @@ -6678,13 +6689,14 @@ components: object: type: string title: Object - default: vector_store.file.deleted + enum: + - vector_store.file.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreFileDeleteResponse description: Response from deleting a vector store file. VectorStoreContent: @@ -6734,13 +6746,13 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string - type: 'null' required: - data + - has_more title: VectorStoreFileContentResponse description: Represents the parsed content of a vector store file. VectorStoreSearchResponse: @@ -6781,7 +6793,8 @@ components: object: type: string title: Object - default: vector_store.search_results.page + enum: + - vector_store.search_results.page search_query: items: type: string @@ -6795,7 +6808,6 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string @@ -6803,6 +6815,7 @@ components: required: - search_query - data + - has_more title: VectorStoreSearchResponsePage description: Paginated response from searching a vector store. VersionInfo: @@ -8420,8 +8433,20 @@ components: description: The ID of the file to attach. attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' description: Attributes to associate with the file. chunking_strategy: @@ -9082,9 +9107,10 @@ components: - type: 'null' description: Filters to apply to the search. max_num_results: - anyOf: - - type: integer - - type: 'null' + type: integer + maximum: 50.0 + minimum: 1.0 + title: Max Num Results description: Maximum number of results to return. default: 10 ranking_options: @@ -9095,9 +9121,8 @@ components: description: Options for ranking results. title: SearchRankingOptions rewrite_query: - anyOf: - - type: boolean - - type: 'null' + type: boolean + title: Rewrite Query description: Whether to rewrite the query for better results. default: false search_mode: @@ -9130,10 +9155,11 @@ components: description: The new name for the vector store. expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' description: Expiration policy for the vector store. + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -9445,6 +9471,69 @@ components: description: Maximum concurrent LLM calls. Falls back to config default if not provided. title: VectorStoreChunkingStrategyContextualConfig description: Configuration for contextual chunking that uses an LLM to situate chunks within the document. + VectorStoreExpirationAfter: + properties: + anchor: + type: string + title: Anchor + description: Anchor timestamp after which the expiration policy applies. + enum: + - last_active_at + days: + type: integer + maximum: 365.0 + minimum: 1.0 + title: Days + description: The number of days after the anchor time that the vector store will expire. + required: + - anchor + - days + title: VectorStoreExpirationAfter + description: Expiration policy for a vector store. + VectorStoreFileBatchFileEntry: + properties: + file_id: + type: string + title: File Id + chunking_strategy: + anyOf: + - oneOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + title: VectorStoreChunkingStrategyAuto + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyStatic + - $ref: '#/components/schemas/VectorStoreChunkingStrategyContextual' + title: VectorStoreChunkingStrategyContextual + discriminator: + propertyName: type + mapping: + auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' + contextual: '#/components/schemas/VectorStoreChunkingStrategyContextual' + static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyAuto | VectorStoreChunkingStrategyStatic | VectorStoreChunkingStrategyContextual + - type: 'null' + title: Chunking Strategy + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' + required: + - file_id + title: VectorStoreFileBatchFileEntry + description: A file entry for creating a vector store file batch with per-file options. _URLOrData: properties: url: @@ -9630,6 +9719,12 @@ components: - content_filter - function_call type: string + VectorStoreStatus: + enum: + - expired + - in_progress + - completed + type: string OpenAIResponseInputToolChoice: anyOf: - $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode' @@ -10550,6 +10645,11 @@ components: - type: string - type: 'null' nullable: true + description: + anyOf: + - type: string + - type: 'null' + nullable: true file_ids: items: type: string @@ -10557,10 +10657,11 @@ components: type: array expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - additionalProperties: true @@ -10568,9 +10669,11 @@ components: - type: 'null' nullable: true metadata: - additionalProperties: true - title: Metadata - type: object + anyOf: + - additionalProperties: true + type: object + - type: 'null' + nullable: true title: VectorStoreCreateRequest VectorStoreModifyRequest: description: Request to modify a vector store. @@ -10582,10 +10685,11 @@ components: nullable: true expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -10612,6 +10716,8 @@ components: nullable: true max_num_results: default: 10 + maximum: 50 + minimum: 1 title: Max Num Results type: integer ranking_options: diff --git a/docs/static/experimental-llama-stack-spec.yaml b/docs/static/experimental-llama-stack-spec.yaml index 5e834f4308..2a6f94f4cc 100644 --- a/docs/static/experimental-llama-stack-spec.yaml +++ b/docs/static/experimental-llama-stack-spec.yaml @@ -6787,26 +6787,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListResponse description: Response from listing vector stores. VectorStoreObject: @@ -6817,14 +6818,15 @@ components: object: type: string title: Object - default: vector_store + enum: + - vector_store created_at: type: integer title: Created At name: - anyOf: - - type: string - - type: 'null' + type: string + title: Name + default: '' usage_bytes: type: integer title: Usage Bytes @@ -6833,13 +6835,17 @@ components: $ref: '#/components/schemas/VectorStoreFileCounts' status: type: string + enum: + - expired + - in_progress + - completed title: Status - default: completed expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter expires_at: anyOf: - type: integer @@ -6849,13 +6855,15 @@ components: - type: integer - type: 'null' metadata: - additionalProperties: true - type: object - title: Metadata + anyOf: + - additionalProperties: true + type: object + - type: 'null' required: - id - created_at - file_counts + - status title: VectorStoreObject description: OpenAI Vector Store object. VectorStoreChunkingStrategy: @@ -6915,6 +6923,10 @@ components: anyOf: - type: string - type: 'null' + description: + anyOf: + - type: string + - type: 'null' file_ids: anyOf: - items: @@ -6923,9 +6935,10 @@ components: - type: 'null' expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - oneOf: @@ -6960,13 +6973,14 @@ components: object: type: string title: Object - default: vector_store.deleted + enum: + - vector_store.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreDeleteResponse description: Response from deleting a vector store. OpenAICreateVectorStoreFileBatchRequestWithExtraBody: @@ -6976,10 +6990,28 @@ components: type: string type: array title: File Ids + files: + anyOf: + - items: + $ref: '#/components/schemas/VectorStoreFileBatchFileEntry' + type: array + - type: 'null' attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' chunking_strategy: anyOf: @@ -7000,8 +7032,6 @@ components: - type: 'null' title: Chunking Strategy additionalProperties: true - required: - - file_ids title: OpenAICreateVectorStoreFileBatchRequestWithExtraBody description: Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: @@ -7012,7 +7042,8 @@ components: object: type: string title: Object - default: vector_store.file_batch + enum: + - vector_store.file_batch created_at: type: integer title: Created At @@ -7020,20 +7051,13 @@ components: type: string title: Vector Store Id status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status file_counts: $ref: '#/components/schemas/VectorStoreFileCounts' required: @@ -7045,31 +7069,21 @@ components: title: VectorStoreFileBatchObject description: OpenAI Vector Store File Batch object. VectorStoreFileStatus: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + enum: + - in_progress + - completed + - cancelled + - failed + type: string VectorStoreFileLastError: properties: code: - anyOf: - - type: string - enum: - - server_error - - type: string - enum: - - rate_limit_exceeded - title: string + type: string + enum: + - server_error + - unsupported_file + - invalid_file + title: Code message: type: string title: Message @@ -7086,23 +7100,25 @@ components: object: type: string title: Object - default: vector_store.file + enum: + - vector_store.file attributes: - additionalProperties: - anyOf: - - type: string - maxLength: 512 - - type: number - - type: boolean - title: string | number | boolean - propertyNames: - type: string - maxLength: 64 - type: object - maxProperties: 16 - title: Attributes - description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. - x-oaiTypeLabel: map + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' chunking_strategy: oneOf: - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' @@ -7128,20 +7144,13 @@ components: - type: 'null' title: VectorStoreFileLastError status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status usage_bytes: type: integer title: Usage Bytes @@ -7162,26 +7171,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreFilesListInBatchResponse description: Response from listing files in a vector store file batch. VectorStoreListFilesResponse: @@ -7189,26 +7199,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListFilesResponse description: Response from listing files in a vector store. VectorStoreFileDeleteResponse: @@ -7219,13 +7230,14 @@ components: object: type: string title: Object - default: vector_store.file.deleted + enum: + - vector_store.file.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreFileDeleteResponse description: Response from deleting a vector store file. VectorStoreContent: @@ -7275,13 +7287,13 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string - type: 'null' required: - data + - has_more title: VectorStoreFileContentResponse description: Represents the parsed content of a vector store file. VectorStoreSearchResponse: @@ -7322,7 +7334,8 @@ components: object: type: string title: Object - default: vector_store.search_results.page + enum: + - vector_store.search_results.page search_query: items: type: string @@ -7336,7 +7349,6 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string @@ -7344,6 +7356,7 @@ components: required: - search_query - data + - has_more title: VectorStoreSearchResponsePage description: Paginated response from searching a vector store. VersionInfo: @@ -8654,8 +8667,20 @@ components: description: The ID of the file to attach. attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' description: Attributes to associate with the file. chunking_strategy: @@ -9316,9 +9341,10 @@ components: - type: 'null' description: Filters to apply to the search. max_num_results: - anyOf: - - type: integer - - type: 'null' + type: integer + maximum: 50.0 + minimum: 1.0 + title: Max Num Results description: Maximum number of results to return. default: 10 ranking_options: @@ -9329,9 +9355,8 @@ components: description: Options for ranking results. title: SearchRankingOptions rewrite_query: - anyOf: - - type: boolean - - type: 'null' + type: boolean + title: Rewrite Query description: Whether to rewrite the query for better results. default: false search_mode: @@ -9364,10 +9389,11 @@ components: description: The new name for the vector store. expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' description: Expiration policy for the vector store. + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -9650,6 +9676,69 @@ components: description: Maximum concurrent LLM calls. Falls back to config default if not provided. title: VectorStoreChunkingStrategyContextualConfig description: Configuration for contextual chunking that uses an LLM to situate chunks within the document. + VectorStoreExpirationAfter: + properties: + anchor: + type: string + title: Anchor + description: Anchor timestamp after which the expiration policy applies. + enum: + - last_active_at + days: + type: integer + maximum: 365.0 + minimum: 1.0 + title: Days + description: The number of days after the anchor time that the vector store will expire. + required: + - anchor + - days + title: VectorStoreExpirationAfter + description: Expiration policy for a vector store. + VectorStoreFileBatchFileEntry: + properties: + file_id: + type: string + title: File Id + chunking_strategy: + anyOf: + - oneOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + title: VectorStoreChunkingStrategyAuto + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyStatic + - $ref: '#/components/schemas/VectorStoreChunkingStrategyContextual' + title: VectorStoreChunkingStrategyContextual + discriminator: + propertyName: type + mapping: + auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' + contextual: '#/components/schemas/VectorStoreChunkingStrategyContextual' + static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyAuto | VectorStoreChunkingStrategyStatic | VectorStoreChunkingStrategyContextual + - type: 'null' + title: Chunking Strategy + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' + required: + - file_id + title: VectorStoreFileBatchFileEntry + description: A file entry for creating a vector store file batch with per-file options. _URLOrData: properties: url: @@ -9835,6 +9924,12 @@ components: - content_filter - function_call type: string + VectorStoreStatus: + enum: + - expired + - in_progress + - completed + type: string OpenAIResponseInputToolChoice: anyOf: - $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode' @@ -10755,6 +10850,11 @@ components: - type: string - type: 'null' nullable: true + description: + anyOf: + - type: string + - type: 'null' + nullable: true file_ids: items: type: string @@ -10762,10 +10862,11 @@ components: type: array expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - additionalProperties: true @@ -10773,9 +10874,11 @@ components: - type: 'null' nullable: true metadata: - additionalProperties: true - title: Metadata - type: object + anyOf: + - additionalProperties: true + type: object + - type: 'null' + nullable: true title: VectorStoreCreateRequest VectorStoreModifyRequest: description: Request to modify a vector store. @@ -10787,10 +10890,11 @@ components: nullable: true expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -10817,6 +10921,8 @@ components: nullable: true max_num_results: default: 10 + maximum: 50 + minimum: 1 title: Max Num Results type: integer ranking_options: diff --git a/docs/static/llama-stack-spec.yaml b/docs/static/llama-stack-spec.yaml index 033219262a..893314258e 100644 --- a/docs/static/llama-stack-spec.yaml +++ b/docs/static/llama-stack-spec.yaml @@ -2857,18 +2857,12 @@ paths: required: false schema: anyOf: - - type: string - enum: - - completed - - type: string - enum: + - enum: - in_progress - - type: string - enum: + - completed - cancelled - - type: string - enum: - failed + type: string - type: 'null' description: Filter by file status. title: Filter @@ -9283,26 +9277,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListResponse description: Response from listing vector stores. VectorStoreObject: @@ -9313,14 +9308,15 @@ components: object: type: string title: Object - default: vector_store + enum: + - vector_store created_at: type: integer title: Created At name: - anyOf: - - type: string - - type: 'null' + type: string + title: Name + default: '' usage_bytes: type: integer title: Usage Bytes @@ -9329,13 +9325,17 @@ components: $ref: '#/components/schemas/VectorStoreFileCounts' status: type: string + enum: + - expired + - in_progress + - completed title: Status - default: completed expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter expires_at: anyOf: - type: integer @@ -9345,13 +9345,15 @@ components: - type: integer - type: 'null' metadata: - additionalProperties: true - type: object - title: Metadata + anyOf: + - additionalProperties: true + type: object + - type: 'null' required: - id - created_at - file_counts + - status title: VectorStoreObject description: OpenAI Vector Store object. VectorStoreChunkingStrategy: @@ -9411,6 +9413,10 @@ components: anyOf: - type: string - type: 'null' + description: + anyOf: + - type: string + - type: 'null' file_ids: anyOf: - items: @@ -9419,9 +9425,10 @@ components: - type: 'null' expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - oneOf: @@ -9456,13 +9463,14 @@ components: object: type: string title: Object - default: vector_store.deleted + enum: + - vector_store.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreDeleteResponse description: Response from deleting a vector store. OpenAICreateVectorStoreFileBatchRequestWithExtraBody: @@ -9472,10 +9480,28 @@ components: type: string type: array title: File Ids + files: + anyOf: + - items: + $ref: '#/components/schemas/VectorStoreFileBatchFileEntry' + type: array + - type: 'null' attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' chunking_strategy: anyOf: @@ -9496,8 +9522,6 @@ components: - type: 'null' title: Chunking Strategy additionalProperties: true - required: - - file_ids title: OpenAICreateVectorStoreFileBatchRequestWithExtraBody description: Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: @@ -9508,7 +9532,8 @@ components: object: type: string title: Object - default: vector_store.file_batch + enum: + - vector_store.file_batch created_at: type: integer title: Created At @@ -9516,20 +9541,13 @@ components: type: string title: Vector Store Id status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status file_counts: $ref: '#/components/schemas/VectorStoreFileCounts' required: @@ -9541,31 +9559,21 @@ components: title: VectorStoreFileBatchObject description: OpenAI Vector Store File Batch object. VectorStoreFileStatus: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + enum: + - in_progress + - completed + - cancelled + - failed + type: string VectorStoreFileLastError: properties: code: - anyOf: - - type: string - enum: - - server_error - - type: string - enum: - - rate_limit_exceeded - title: string + type: string + enum: + - server_error + - unsupported_file + - invalid_file + title: Code message: type: string title: Message @@ -9582,23 +9590,25 @@ components: object: type: string title: Object - default: vector_store.file + enum: + - vector_store.file attributes: - additionalProperties: - anyOf: - - type: string - maxLength: 512 - - type: number - - type: boolean - title: string | number | boolean - propertyNames: - type: string - maxLength: 64 - type: object - maxProperties: 16 - title: Attributes - description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. - x-oaiTypeLabel: map + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' chunking_strategy: oneOf: - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' @@ -9624,20 +9634,13 @@ components: - type: 'null' title: VectorStoreFileLastError status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status usage_bytes: type: integer title: Usage Bytes @@ -9658,26 +9661,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreFilesListInBatchResponse description: Response from listing files in a vector store file batch. VectorStoreListFilesResponse: @@ -9685,26 +9689,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListFilesResponse description: Response from listing files in a vector store. VectorStoreFileDeleteResponse: @@ -9715,13 +9720,14 @@ components: object: type: string title: Object - default: vector_store.file.deleted + enum: + - vector_store.file.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreFileDeleteResponse description: Response from deleting a vector store file. VectorStoreContent: @@ -9771,13 +9777,13 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string - type: 'null' required: - data + - has_more title: VectorStoreFileContentResponse description: Represents the parsed content of a vector store file. VectorStoreSearchResponse: @@ -9818,7 +9824,8 @@ components: object: type: string title: Object - default: vector_store.search_results.page + enum: + - vector_store.search_results.page search_query: items: type: string @@ -9832,7 +9839,6 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string @@ -9840,6 +9846,7 @@ components: required: - search_query - data + - has_more title: VectorStoreSearchResponsePage description: Paginated response from searching a vector store. VersionInfo: @@ -11432,8 +11439,20 @@ components: description: The ID of the file to attach. attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' description: Attributes to associate with the file. chunking_strategy: @@ -12094,9 +12113,10 @@ components: - type: 'null' description: Filters to apply to the search. max_num_results: - anyOf: - - type: integer - - type: 'null' + type: integer + maximum: 50.0 + minimum: 1.0 + title: Max Num Results description: Maximum number of results to return. default: 10 ranking_options: @@ -12107,9 +12127,8 @@ components: description: Options for ranking results. title: SearchRankingOptions rewrite_query: - anyOf: - - type: boolean - - type: 'null' + type: boolean + title: Rewrite Query description: Whether to rewrite the query for better results. default: false search_mode: @@ -12142,10 +12161,11 @@ components: description: The new name for the vector store. expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' description: Expiration policy for the vector store. + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -12457,6 +12477,69 @@ components: description: Maximum concurrent LLM calls. Falls back to config default if not provided. title: VectorStoreChunkingStrategyContextualConfig description: Configuration for contextual chunking that uses an LLM to situate chunks within the document. + VectorStoreExpirationAfter: + properties: + anchor: + type: string + title: Anchor + description: Anchor timestamp after which the expiration policy applies. + enum: + - last_active_at + days: + type: integer + maximum: 365.0 + minimum: 1.0 + title: Days + description: The number of days after the anchor time that the vector store will expire. + required: + - anchor + - days + title: VectorStoreExpirationAfter + description: Expiration policy for a vector store. + VectorStoreFileBatchFileEntry: + properties: + file_id: + type: string + title: File Id + chunking_strategy: + anyOf: + - oneOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + title: VectorStoreChunkingStrategyAuto + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyStatic + - $ref: '#/components/schemas/VectorStoreChunkingStrategyContextual' + title: VectorStoreChunkingStrategyContextual + discriminator: + propertyName: type + mapping: + auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' + contextual: '#/components/schemas/VectorStoreChunkingStrategyContextual' + static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyAuto | VectorStoreChunkingStrategyStatic | VectorStoreChunkingStrategyContextual + - type: 'null' + title: Chunking Strategy + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' + required: + - file_id + title: VectorStoreFileBatchFileEntry + description: A file entry for creating a vector store file batch with per-file options. _URLOrData: properties: url: @@ -12642,6 +12725,12 @@ components: - content_filter - function_call type: string + VectorStoreStatus: + enum: + - expired + - in_progress + - completed + type: string OpenAIResponseInputToolChoice: anyOf: - $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode' @@ -13562,6 +13651,11 @@ components: - type: string - type: 'null' nullable: true + description: + anyOf: + - type: string + - type: 'null' + nullable: true file_ids: items: type: string @@ -13569,10 +13663,11 @@ components: type: array expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - additionalProperties: true @@ -13580,9 +13675,11 @@ components: - type: 'null' nullable: true metadata: - additionalProperties: true - title: Metadata - type: object + anyOf: + - additionalProperties: true + type: object + - type: 'null' + nullable: true title: VectorStoreCreateRequest VectorStoreModifyRequest: description: Request to modify a vector store. @@ -13594,10 +13691,11 @@ components: nullable: true expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -13624,6 +13722,8 @@ components: nullable: true max_num_results: default: 10 + maximum: 50 + minimum: 1 title: Max Num Results type: integer ranking_options: diff --git a/docs/static/openai-coverage.json b/docs/static/openai-coverage.json index c41c58e8c6..122057d632 100644 --- a/docs/static/openai-coverage.json +++ b/docs/static/openai-coverage.json @@ -128,10 +128,10 @@ ] }, "conformance": { - "score": 87.9, - "issues": 288, - "missing_properties": 130, - "total_problems": 418, + "score": 89.3, + "issues": 239, + "missing_properties": 128, + "total_problems": 367, "total_properties": 3441 } }, @@ -1941,9 +1941,9 @@ ] }, "Vector stores": { - "score": 61.3, - "issues": 106, - "missing_properties": 14, + "score": 77.7, + "issues": 57, + "missing_properties": 12, "total_properties": 310, "endpoints": [ { @@ -1975,34 +1975,10 @@ "Type removed: ['object']" ] }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.metadata", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "GET.responses.200.content.application/json.properties.data.items.properties.name", "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.object", - "details": [ - "Enum removed: ['vector_store']", - "Default changed: None -> vector_store" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.status", - "details": [ - "Enum removed: ['expired', 'in_progress', 'completed']", - "Default changed: None -> completed" + "Default changed: None -> " ] }, { @@ -2010,43 +1986,14 @@ "details": [ "Default changed: None -> 0" ] - }, - { - "property": "GET.responses.200.content.application/json.properties.first_id", - "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.has_more", - "details": [ - "Default changed: None -> False" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.last_id", - "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.object", - "details": [ - "Default changed: None -> list" - ] } ], "missing_count": 2, - "issues_count": 12 + "issues_count": 5 }, { "method": "POST", "missing_properties": [ - "POST.requestBody.content.application/json.properties.description", "POST.requestBody.content.application/json.properties.expires_after.properties.anchor", "POST.requestBody.content.application/json.properties.expires_after.properties.days", "POST.responses.200.content.application/json.properties.expires_after.properties.anchor", @@ -2060,6 +2007,14 @@ "Union variants added: 2" ] }, + { + "property": "POST.requestBody.content.application/json.properties.description", + "details": [ + "Type removed: ['string']", + "Nullable added (OpenAI non-nullable)", + "Union variants added: 2" + ] + }, { "property": "POST.requestBody.content.application/json.properties.expires_after", "details": [ @@ -2096,34 +2051,10 @@ "Type removed: ['object']" ] }, - { - "property": "POST.responses.200.content.application/json.properties.metadata", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "POST.responses.200.content.application/json.properties.name", "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store']", - "Default changed: None -> vector_store" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['expired', 'in_progress', 'completed']", - "Default changed: None -> completed" + "Default changed: None -> " ] }, { @@ -2133,8 +2064,8 @@ ] } ], - "missing_count": 5, - "issues_count": 11 + "missing_count": 4, + "issues_count": 9 } ] }, @@ -2144,23 +2075,9 @@ { "method": "DELETE", "missing_properties": [], - "conformance_issues": [ - { - "property": "DELETE.responses.200.content.application/json.properties.deleted", - "details": [ - "Default changed: None -> True" - ] - }, - { - "property": "DELETE.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store.deleted']", - "Default changed: None -> vector_store.deleted" - ] - } - ], + "conformance_issues": [], "missing_count": 0, - "issues_count": 2 + "issues_count": 0 }, { "method": "GET", @@ -2182,34 +2099,10 @@ "Type removed: ['object']" ] }, - { - "property": "GET.responses.200.content.application/json.properties.metadata", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "GET.responses.200.content.application/json.properties.name", "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store']", - "Default changed: None -> vector_store" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['expired', 'in_progress', 'completed']", - "Default changed: None -> completed" + "Default changed: None -> " ] }, { @@ -2220,7 +2113,7 @@ } ], "missing_count": 2, - "issues_count": 7 + "issues_count": 4 }, { "method": "POST", @@ -2256,34 +2149,10 @@ "Type removed: ['object']" ] }, - { - "property": "POST.responses.200.content.application/json.properties.metadata", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "POST.responses.200.content.application/json.properties.name", "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store']", - "Default changed: None -> vector_store" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['expired', 'in_progress', 'completed']", - "Default changed: None -> completed" + "Default changed: None -> " ] }, { @@ -2294,7 +2163,7 @@ } ], "missing_count": 2, - "issues_count": 9 + "issues_count": 6 } ] }, @@ -2303,9 +2172,7 @@ "operations": [ { "method": "POST", - "missing_properties": [ - "POST.requestBody.content.application/json.properties.files" - ], + "missing_properties": [], "conformance_issues": [ { "property": "POST.requestBody.content.application/json.properties.chunking_strategy", @@ -2315,28 +2182,27 @@ ] }, { - "property": "POST.responses.200.content.application/json.properties.file_counts", + "property": "POST.requestBody.content.application/json.properties.files", "details": [ - "Type removed: ['object']" + "Type removed: ['array']", + "Nullable added (OpenAI non-nullable)", + "Union variants added: 2" ] }, { - "property": "POST.responses.200.content.application/json.properties.object", + "property": "POST.responses.200.content.application/json.properties.file_counts", "details": [ - "Enum removed: ['vector_store.files_batch']", - "Default changed: None -> vector_store.file_batch" + "Type removed: ['object']" ] }, { - "property": "POST.responses.200.content.application/json.properties.status", + "property": "POST.responses.200.content.application/json.properties.object", "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" + "Enum values removed: ['vector_store.files_batch']" ] } ], - "missing_count": 1, + "missing_count": 0, "issues_count": 4 } ] @@ -2357,21 +2223,12 @@ { "property": "GET.responses.200.content.application/json.properties.object", "details": [ - "Enum removed: ['vector_store.files_batch']", - "Default changed: None -> vector_store.file_batch" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" + "Enum values removed: ['vector_store.files_batch']" ] } ], "missing_count": 0, - "issues_count": 3 + "issues_count": 2 } ] }, @@ -2391,21 +2248,12 @@ { "property": "POST.responses.200.content.application/json.properties.object", "details": [ - "Enum removed: ['vector_store.files_batch']", - "Default changed: None -> vector_store.file_batch" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" + "Enum values removed: ['vector_store.files_batch']" ] } ], "missing_count": 0, - "issues_count": 3 + "issues_count": 2 } ] }, @@ -2422,14 +2270,6 @@ "Type removed: ['object']" ] }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.attributes", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "GET.responses.200.content.application/json.properties.data.items.properties.chunking_strategy", "details": [ @@ -2445,58 +2285,15 @@ "Union variants removed: 1" ] }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.object", - "details": [ - "Enum removed: ['vector_store.file']", - "Default changed: None -> vector_store.file" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" - ] - }, { "property": "GET.responses.200.content.application/json.properties.data.items.properties.usage_bytes", "details": [ "Default changed: None -> 0" ] - }, - { - "property": "GET.responses.200.content.application/json.properties.first_id", - "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.has_more", - "details": [ - "Default changed: None -> False" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.last_id", - "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.object", - "details": [ - "Default changed: None -> list" - ] } ], "missing_count": 0, - "issues_count": 11 + "issues_count": 4 } ] }, @@ -2513,14 +2310,6 @@ "Type removed: ['object']" ] }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.attributes", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "GET.responses.200.content.application/json.properties.data.items.properties.chunking_strategy", "details": [ @@ -2536,58 +2325,15 @@ "Union variants removed: 1" ] }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.object", - "details": [ - "Enum removed: ['vector_store.file']", - "Default changed: None -> vector_store.file" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.data.items.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" - ] - }, { "property": "GET.responses.200.content.application/json.properties.data.items.properties.usage_bytes", "details": [ "Default changed: None -> 0" ] - }, - { - "property": "GET.responses.200.content.application/json.properties.first_id", - "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.has_more", - "details": [ - "Default changed: None -> False" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.last_id", - "details": [ - "Type removed: ['string']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.object", - "details": [ - "Default changed: None -> list" - ] } ], "missing_count": 0, - "issues_count": 11 + "issues_count": 4 }, { "method": "POST", @@ -2600,14 +2346,6 @@ "Union variants added: 2" ] }, - { - "property": "POST.responses.200.content.application/json.properties.attributes", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "POST.responses.200.content.application/json.properties.chunking_strategy", "details": [ @@ -2623,21 +2361,6 @@ "Union variants removed: 1" ] }, - { - "property": "POST.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store.file']", - "Default changed: None -> vector_store.file" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" - ] - }, { "property": "POST.responses.200.content.application/json.properties.usage_bytes", "details": [ @@ -2646,7 +2369,7 @@ } ], "missing_count": 0, - "issues_count": 7 + "issues_count": 4 } ] }, @@ -2656,36 +2379,14 @@ { "method": "DELETE", "missing_properties": [], - "conformance_issues": [ - { - "property": "DELETE.responses.200.content.application/json.properties.deleted", - "details": [ - "Default changed: None -> True" - ] - }, - { - "property": "DELETE.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store.file.deleted']", - "Default changed: None -> vector_store.file.deleted" - ] - } - ], + "conformance_issues": [], "missing_count": 0, - "issues_count": 2 + "issues_count": 0 }, { "method": "GET", "missing_properties": [], "conformance_issues": [ - { - "property": "GET.responses.200.content.application/json.properties.attributes", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "GET.responses.200.content.application/json.properties.chunking_strategy", "details": [ @@ -2701,21 +2402,6 @@ "Union variants removed: 1" ] }, - { - "property": "GET.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store.file']", - "Default changed: None -> vector_store.file" - ] - }, - { - "property": "GET.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" - ] - }, { "property": "GET.responses.200.content.application/json.properties.usage_bytes", "details": [ @@ -2724,7 +2410,7 @@ } ], "missing_count": 0, - "issues_count": 6 + "issues_count": 3 }, { "method": "POST", @@ -2738,14 +2424,6 @@ "Union variants removed: 2" ] }, - { - "property": "POST.responses.200.content.application/json.properties.attributes", - "details": [ - "Type added: ['object']", - "Nullable removed (OpenAI nullable)", - "Union variants removed: 2" - ] - }, { "property": "POST.responses.200.content.application/json.properties.chunking_strategy", "details": [ @@ -2761,21 +2439,6 @@ "Union variants removed: 1" ] }, - { - "property": "POST.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store.file']", - "Default changed: None -> vector_store.file" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.status", - "details": [ - "Enum removed: ['in_progress', 'completed', 'cancelled', 'failed']", - "Type removed: ['string']", - "Union variants added: 4" - ] - }, { "property": "POST.responses.200.content.application/json.properties.usage_bytes", "details": [ @@ -2784,7 +2447,7 @@ } ], "missing_count": 0, - "issues_count": 7 + "issues_count": 4 } ] }, @@ -2800,16 +2463,10 @@ "details": [ "Type removed: ['object']" ] - }, - { - "property": "GET.responses.200.content.application/json.properties.has_more", - "details": [ - "Default changed: None -> False" - ] } ], "missing_count": 0, - "issues_count": 2 + "issues_count": 1 } ] }, @@ -2829,14 +2486,6 @@ "Union variants added: 2" ] }, - { - "property": "POST.requestBody.content.application/json.properties.max_num_results", - "details": [ - "Type removed: ['integer']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, { "property": "POST.requestBody.content.application/json.properties.query", "details": [ @@ -2850,14 +2499,6 @@ "Union variants added: 2" ] }, - { - "property": "POST.requestBody.content.application/json.properties.rewrite_query", - "details": [ - "Type removed: ['boolean']", - "Nullable added (OpenAI non-nullable)", - "Union variants added: 2" - ] - }, { "property": "POST.responses.200.content.application/json.properties.data.items", "details": [ @@ -2869,23 +2510,10 @@ "details": [ "Type removed: ['object']" ] - }, - { - "property": "POST.responses.200.content.application/json.properties.has_more", - "details": [ - "Default changed: None -> False" - ] - }, - { - "property": "POST.responses.200.content.application/json.properties.object", - "details": [ - "Enum removed: ['vector_store.search_results.page']", - "Default changed: None -> vector_store.search_results.page" - ] } ], "missing_count": 2, - "issues_count": 9 + "issues_count": 5 } ] } diff --git a/docs/static/stainless-llama-stack-spec.yaml b/docs/static/stainless-llama-stack-spec.yaml index 06e361debc..0f38cd5a04 100644 --- a/docs/static/stainless-llama-stack-spec.yaml +++ b/docs/static/stainless-llama-stack-spec.yaml @@ -2981,18 +2981,12 @@ paths: required: false schema: anyOf: - - type: string - enum: - - completed - - type: string - enum: + - enum: - in_progress - - type: string - enum: + - completed - cancelled - - type: string - enum: - failed + type: string - type: 'null' description: Filter by file status. title: Filter @@ -10335,26 +10329,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListResponse description: Response from listing vector stores. VectorStoreObject: @@ -10365,14 +10360,15 @@ components: object: type: string title: Object - default: vector_store + enum: + - vector_store created_at: type: integer title: Created At name: - anyOf: - - type: string - - type: 'null' + type: string + title: Name + default: '' usage_bytes: type: integer title: Usage Bytes @@ -10381,13 +10377,17 @@ components: $ref: '#/components/schemas/VectorStoreFileCounts' status: type: string + enum: + - expired + - in_progress + - completed title: Status - default: completed expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter expires_at: anyOf: - type: integer @@ -10397,13 +10397,15 @@ components: - type: integer - type: 'null' metadata: - additionalProperties: true - type: object - title: Metadata + anyOf: + - additionalProperties: true + type: object + - type: 'null' required: - id - created_at - file_counts + - status title: VectorStoreObject description: OpenAI Vector Store object. VectorStoreChunkingStrategy: @@ -10463,6 +10465,10 @@ components: anyOf: - type: string - type: 'null' + description: + anyOf: + - type: string + - type: 'null' file_ids: anyOf: - items: @@ -10471,9 +10477,10 @@ components: - type: 'null' expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - oneOf: @@ -10508,13 +10515,14 @@ components: object: type: string title: Object - default: vector_store.deleted + enum: + - vector_store.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreDeleteResponse description: Response from deleting a vector store. OpenAICreateVectorStoreFileBatchRequestWithExtraBody: @@ -10524,10 +10532,28 @@ components: type: string type: array title: File Ids + files: + anyOf: + - items: + $ref: '#/components/schemas/VectorStoreFileBatchFileEntry' + type: array + - type: 'null' attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' chunking_strategy: anyOf: @@ -10548,8 +10574,6 @@ components: - type: 'null' title: Chunking Strategy additionalProperties: true - required: - - file_ids title: OpenAICreateVectorStoreFileBatchRequestWithExtraBody description: Request to create a vector store file batch with extra_body support. VectorStoreFileBatchObject: @@ -10560,7 +10584,8 @@ components: object: type: string title: Object - default: vector_store.file_batch + enum: + - vector_store.file_batch created_at: type: integer title: Created At @@ -10568,20 +10593,13 @@ components: type: string title: Vector Store Id status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status file_counts: $ref: '#/components/schemas/VectorStoreFileCounts' required: @@ -10593,31 +10611,21 @@ components: title: VectorStoreFileBatchObject description: OpenAI Vector Store File Batch object. VectorStoreFileStatus: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + enum: + - in_progress + - completed + - cancelled + - failed + type: string VectorStoreFileLastError: properties: code: - anyOf: - - type: string - enum: - - server_error - - type: string - enum: - - rate_limit_exceeded - title: string + type: string + enum: + - server_error + - unsupported_file + - invalid_file + title: Code message: type: string title: Message @@ -10634,23 +10642,25 @@ components: object: type: string title: Object - default: vector_store.file + enum: + - vector_store.file attributes: - additionalProperties: - anyOf: - - type: string - maxLength: 512 - - type: number - - type: boolean - title: string | number | boolean - propertyNames: - type: string - maxLength: 64 - type: object - maxProperties: 16 - title: Attributes - description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. - x-oaiTypeLabel: map + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' chunking_strategy: oneOf: - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' @@ -10676,20 +10686,13 @@ components: - type: 'null' title: VectorStoreFileLastError status: - anyOf: - - type: string - enum: - - completed - - type: string - enum: - - in_progress - - type: string - enum: - - cancelled - - type: string - enum: - - failed - title: string + type: string + enum: + - in_progress + - completed + - cancelled + - failed + title: Status usage_bytes: type: integer title: Usage Bytes @@ -10710,26 +10713,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreFilesListInBatchResponse description: Response from listing files in a vector store file batch. VectorStoreListFilesResponse: @@ -10737,26 +10741,27 @@ components: object: type: string title: Object - default: list + enum: + - list data: items: $ref: '#/components/schemas/VectorStoreFileObject' type: array title: Data first_id: - anyOf: - - type: string - - type: 'null' + type: string + title: First Id last_id: - anyOf: - - type: string - - type: 'null' + type: string + title: Last Id has_more: type: boolean title: Has More - default: false required: - data + - first_id + - last_id + - has_more title: VectorStoreListFilesResponse description: Response from listing files in a vector store. VectorStoreFileDeleteResponse: @@ -10767,13 +10772,14 @@ components: object: type: string title: Object - default: vector_store.file.deleted + enum: + - vector_store.file.deleted deleted: type: boolean title: Deleted - default: true required: - id + - deleted title: VectorStoreFileDeleteResponse description: Response from deleting a vector store file. VectorStoreContent: @@ -10823,13 +10829,13 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string - type: 'null' required: - data + - has_more title: VectorStoreFileContentResponse description: Represents the parsed content of a vector store file. VectorStoreSearchResponse: @@ -10870,7 +10876,8 @@ components: object: type: string title: Object - default: vector_store.search_results.page + enum: + - vector_store.search_results.page search_query: items: type: string @@ -10884,7 +10891,6 @@ components: has_more: type: boolean title: Has More - default: false next_page: anyOf: - type: string @@ -10892,6 +10898,7 @@ components: required: - search_query - data + - has_more title: VectorStoreSearchResponsePage description: Paginated response from searching a vector store. VersionInfo: @@ -12507,8 +12514,20 @@ components: description: The ID of the file to attach. attributes: anyOf: - - additionalProperties: true + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map - type: 'null' description: Attributes to associate with the file. chunking_strategy: @@ -13169,9 +13188,10 @@ components: - type: 'null' description: Filters to apply to the search. max_num_results: - anyOf: - - type: integer - - type: 'null' + type: integer + maximum: 50.0 + minimum: 1.0 + title: Max Num Results description: Maximum number of results to return. default: 10 ranking_options: @@ -13182,9 +13202,8 @@ components: description: Options for ranking results. title: SearchRankingOptions rewrite_query: - anyOf: - - type: boolean - - type: 'null' + type: boolean + title: Rewrite Query description: Whether to rewrite the query for better results. default: false search_mode: @@ -13217,10 +13236,11 @@ components: description: The new name for the vector store. expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' description: Expiration policy for the vector store. + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -13532,6 +13552,69 @@ components: description: Maximum concurrent LLM calls. Falls back to config default if not provided. title: VectorStoreChunkingStrategyContextualConfig description: Configuration for contextual chunking that uses an LLM to situate chunks within the document. + VectorStoreExpirationAfter: + properties: + anchor: + type: string + title: Anchor + description: Anchor timestamp after which the expiration policy applies. + enum: + - last_active_at + days: + type: integer + maximum: 365.0 + minimum: 1.0 + title: Days + description: The number of days after the anchor time that the vector store will expire. + required: + - anchor + - days + title: VectorStoreExpirationAfter + description: Expiration policy for a vector store. + VectorStoreFileBatchFileEntry: + properties: + file_id: + type: string + title: File Id + chunking_strategy: + anyOf: + - oneOf: + - $ref: '#/components/schemas/VectorStoreChunkingStrategyAuto' + title: VectorStoreChunkingStrategyAuto + - $ref: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyStatic + - $ref: '#/components/schemas/VectorStoreChunkingStrategyContextual' + title: VectorStoreChunkingStrategyContextual + discriminator: + propertyName: type + mapping: + auto: '#/components/schemas/VectorStoreChunkingStrategyAuto' + contextual: '#/components/schemas/VectorStoreChunkingStrategyContextual' + static: '#/components/schemas/VectorStoreChunkingStrategyStatic' + title: VectorStoreChunkingStrategyAuto | VectorStoreChunkingStrategyStatic | VectorStoreChunkingStrategyContextual + - type: 'null' + title: Chunking Strategy + attributes: + anyOf: + - additionalProperties: + anyOf: + - type: string + maxLength: 512 + - type: number + - type: boolean + title: string | number | boolean + propertyNames: + type: string + maxLength: 64 + type: object + maxProperties: 16 + description: Set of 16 key-value pairs that can be attached to an object. This can be useful for storing additional information about the object in a structured format, and querying for objects via API or the dashboard. Keys are strings with a maximum length of 64 characters. Values are strings with a maximum length of 512 characters, booleans, or numbers. + x-oaiTypeLabel: map + - type: 'null' + required: + - file_id + title: VectorStoreFileBatchFileEntry + description: A file entry for creating a vector store file batch with per-file options. _URLOrData: properties: url: @@ -13717,6 +13800,12 @@ components: - content_filter - function_call type: string + VectorStoreStatus: + enum: + - expired + - in_progress + - completed + type: string OpenAIResponseInputToolChoice: anyOf: - $ref: '#/components/schemas/OpenAIResponseInputToolChoiceMode' @@ -14637,6 +14726,11 @@ components: - type: string - type: 'null' nullable: true + description: + anyOf: + - type: string + - type: 'null' + nullable: true file_ids: items: type: string @@ -14644,10 +14738,11 @@ components: type: array expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter chunking_strategy: anyOf: - additionalProperties: true @@ -14655,9 +14750,11 @@ components: - type: 'null' nullable: true metadata: - additionalProperties: true - title: Metadata - type: object + anyOf: + - additionalProperties: true + type: object + - type: 'null' + nullable: true title: VectorStoreCreateRequest VectorStoreModifyRequest: description: Request to modify a vector store. @@ -14669,10 +14766,11 @@ components: nullable: true expires_after: anyOf: - - additionalProperties: true - type: object + - $ref: '#/components/schemas/VectorStoreExpirationAfter' + title: VectorStoreExpirationAfter - type: 'null' nullable: true + title: VectorStoreExpirationAfter metadata: anyOf: - additionalProperties: true @@ -14699,6 +14797,8 @@ components: nullable: true max_num_results: default: 10 + maximum: 50 + minimum: 1 title: Max Num Results type: integer ranking_options: diff --git a/src/llama_stack/core/routers/vector_io.py b/src/llama_stack/core/routers/vector_io.py index 026bd05a62..d9c188debb 100644 --- a/src/llama_stack/core/routers/vector_io.py +++ b/src/llama_stack/core/routers/vector_io.py @@ -408,8 +408,8 @@ async def openai_list_vector_stores( # Determine pagination info has_more = len(all_stores) > limit - first_id = limited_stores[0].id if limited_stores else None - last_id = limited_stores[-1].id if limited_stores else None + first_id = limited_stores[0].id if limited_stores else "" + last_id = limited_stores[-1].id if limited_stores else "" return VectorStoreListResponse( data=limited_stores, diff --git a/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py b/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py index a09ddc3bf7..b8886cd107 100644 --- a/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py +++ b/src/llama_stack/providers/utils/memory/openai_vector_store_mixin.py @@ -529,11 +529,11 @@ async def openai_create_vector_store( "id": vector_store_id, "object": "vector_store", "created_at": created_at, - "name": params.name, + "name": params.name or "", "usage_bytes": 0, "file_counts": file_counts.model_dump(), "status": status, - "expires_after": params.expires_after, + "expires_after": params.expires_after.model_dump() if params.expires_after else None, "expires_at": None, "last_active_at": created_at, "file_ids": [], @@ -619,8 +619,8 @@ async def openai_list_vector_stores( # Determine pagination info has_more = len(all_stores) > limit - first_id = data[0].id if data else None - last_id = data[-1].id if data else None + first_id = data[0].id if data else "" + last_id = data[-1].id if data else "" return VectorStoreListResponse( data=data, @@ -655,7 +655,11 @@ async def openai_update_vector_store( if request.name is not None: store_info["name"] = request.name if request.expires_after is not None: - store_info["expires_after"] = request.expires_after + store_info["expires_after"] = ( + request.expires_after.model_dump() + if hasattr(request.expires_after, "model_dump") + else request.expires_after + ) if request.metadata is not None: store_info["metadata"] = request.metadata @@ -915,6 +919,7 @@ async def openai_attach_file_to_vector_store( chunking_strategy=chunking_strategy, created_at=created_at, status="in_progress", + usage_bytes=0, vector_store_id=vector_store_id, ) @@ -1166,8 +1171,8 @@ async def openai_list_files_in_vector_store( # Determine pagination info has_more = len(file_objects) > limit - first_id = limited_files[0].id if file_objects else None - last_id = limited_files[-1].id if file_objects else None + first_id = limited_files[0].id if file_objects else "" + last_id = limited_files[-1].id if file_objects else "" return VectorStoreListFilesResponse( data=limited_files, @@ -1217,6 +1222,7 @@ async def openai_retrieve_vector_store_file_contents( ) return VectorStoreFileContentResponse( data=content, + has_more=False, ) async def openai_update_vector_store_file( @@ -1546,8 +1552,8 @@ async def openai_list_files_in_vector_store_file_batch( # Determine pagination info has_more = len(file_objects) > limit - first_id = limited_files[0].id if limited_files else None - last_id = limited_files[-1].id if limited_files else None + first_id = limited_files[0].id if limited_files else "" + last_id = limited_files[-1].id if limited_files else "" return VectorStoreFilesListInBatchResponse( data=limited_files, diff --git a/src/llama_stack_api/vector_io/models.py b/src/llama_stack_api/vector_io/models.py index e4b3ce70eb..799a2ae109 100644 --- a/src/llama_stack_api/vector_io/models.py +++ b/src/llama_stack_api/vector_io/models.py @@ -115,6 +115,20 @@ class QueryChunksResponse(BaseModel): scores: list[float] +@json_schema_type +class VectorStoreExpirationAfter(BaseModel): + """Expiration policy for a vector store. + + :param anchor: Anchor timestamp after which the expiration policy applies. Supported anchors: last_active_at + :param days: The number of days after the anchor time that the vector store will expire + """ + + anchor: Literal["last_active_at"] = Field(description="Anchor timestamp after which the expiration policy applies.") + days: int = Field( + ge=1, le=365, description="The number of days after the anchor time that the vector store will expire." + ) + + @json_schema_type class VectorStoreFileCounts(BaseModel): """File processing status counts for a vector store. @@ -133,6 +147,10 @@ class VectorStoreFileCounts(BaseModel): total: int +VectorStoreStatus = Literal["expired", "in_progress", "completed"] +register_schema(VectorStoreStatus, name="VectorStoreStatus") + + @json_schema_type class VectorStoreObject(BaseModel): """OpenAI Vector Store object. @@ -140,7 +158,7 @@ class VectorStoreObject(BaseModel): :param id: Unique identifier for the vector store :param object: Object type identifier, always "vector_store" :param created_at: Timestamp when the vector store was created - :param name: (Optional) Name of the vector store + :param name: Name of the vector store :param usage_bytes: Storage space used by the vector store in bytes :param file_counts: File processing status counts for the vector store :param status: Current status of the vector store @@ -151,16 +169,16 @@ class VectorStoreObject(BaseModel): """ id: str - object: str = "vector_store" + object: Literal["vector_store"] = "vector_store" created_at: int - name: str | None = None + name: str = "" usage_bytes: int = 0 file_counts: VectorStoreFileCounts - status: str = "completed" - expires_after: dict[str, Any] | None = None + status: VectorStoreStatus + expires_after: VectorStoreExpirationAfter | None = None expires_at: int | None = None last_active_at: int | None = None - metadata: dict[str, Any] = Field(default_factory=dict) + metadata: dict[str, Any] | None = None @json_schema_type @@ -168,6 +186,7 @@ class VectorStoreCreateRequest(BaseModel): """Request to create a vector store. :param name: (Optional) Name for the vector store + :param description: (Optional) Description of the vector store :param file_ids: List of file IDs to include in the vector store :param expires_after: (Optional) Expiration policy for the vector store :param chunking_strategy: (Optional) Strategy for splitting files into chunks @@ -175,10 +194,11 @@ class VectorStoreCreateRequest(BaseModel): """ name: str | None = None + description: str | None = None file_ids: list[str] = Field(default_factory=list) - expires_after: dict[str, Any] | None = None + expires_after: VectorStoreExpirationAfter | None = None chunking_strategy: dict[str, Any] | None = None - metadata: dict[str, Any] = Field(default_factory=dict) + metadata: dict[str, Any] | None = None @json_schema_type @@ -191,7 +211,7 @@ class VectorStoreModifyRequest(BaseModel): """ name: str | None = None - expires_after: dict[str, Any] | None = None + expires_after: VectorStoreExpirationAfter | None = None metadata: dict[str, Any] | None = None @@ -201,16 +221,16 @@ class VectorStoreListResponse(BaseModel): :param object: Object type identifier, always "list" :param data: List of vector store objects - :param first_id: (Optional) ID of the first vector store in the list for pagination - :param last_id: (Optional) ID of the last vector store in the list for pagination + :param first_id: ID of the first vector store in the list for pagination + :param last_id: ID of the last vector store in the list for pagination :param has_more: Whether there are more vector stores available beyond this page """ - object: str = "list" + object: Literal["list"] = "list" data: list[VectorStoreObject] - first_id: str | None = None - last_id: str | None = None - has_more: bool = False + first_id: str + last_id: str + has_more: bool @json_schema_type @@ -226,7 +246,7 @@ class VectorStoreSearchRequest(BaseModel): query: str | list[str] filters: dict[str, Any] | None = None - max_num_results: int = 10 + max_num_results: int = Field(default=10, ge=1, le=50) ranking_options: dict[str, Any] | None = None rewrite_query: bool = False @@ -278,10 +298,10 @@ class VectorStoreSearchResponsePage(BaseModel): :param next_page: (Optional) Token for retrieving the next page of results """ - object: str = "vector_store.search_results.page" + object: Literal["vector_store.search_results.page"] = "vector_store.search_results.page" search_query: list[str] data: list[VectorStoreSearchResponse] - has_more: bool = False + has_more: bool next_page: str | None = None @@ -295,8 +315,8 @@ class VectorStoreDeleteResponse(BaseModel): """ id: str - object: str = "vector_store.deleted" - deleted: bool = True + object: Literal["vector_store.deleted"] = "vector_store.deleted" + deleted: bool @json_schema_type @@ -311,7 +331,7 @@ class VectorStoreFileContentResponse(BaseModel): object: Literal["vector_store.file_content.page"] = "vector_store.file_content.page" data: list[VectorStoreContent] - has_more: bool = False + has_more: bool next_page: str | None = None @@ -516,11 +536,11 @@ class VectorStoreFileLastError(BaseModel): :param message: Human-readable error message describing the failure """ - code: Literal["server_error"] | Literal["rate_limit_exceeded"] + code: Literal["server_error", "unsupported_file", "invalid_file"] message: str -VectorStoreFileStatus = Literal["completed"] | Literal["in_progress"] | Literal["cancelled"] | Literal["failed"] +VectorStoreFileStatus = Literal["in_progress", "completed", "cancelled", "failed"] register_schema(VectorStoreFileStatus, name="VectorStoreFileStatus") @@ -592,15 +612,15 @@ class VectorStoreFileObject(BaseModel): :param attributes: Key-value attributes associated with the file :param chunking_strategy: Strategy used for splitting the file into chunks :param created_at: Timestamp when the file was added to the vector store - :param last_error: (Optional) Error information if file processing failed + :param last_error: Error information if file processing failed, or null if no errors :param status: Current processing status of the file :param usage_bytes: Storage space used by this file in bytes :param vector_store_id: ID of the vector store containing this file """ id: str - object: str = "vector_store.file" - attributes: VectorStoreFileAttributes = Field(default_factory=dict) + object: Literal["vector_store.file"] = "vector_store.file" + attributes: VectorStoreFileAttributes | None = None chunking_strategy: VectorStoreChunkingStrategy created_at: int last_error: VectorStoreFileLastError | None = None @@ -610,8 +630,10 @@ class VectorStoreFileObject(BaseModel): @field_validator("attributes", mode="before") @classmethod - def _validate_attributes(cls, v: dict[str, Any] | None) -> dict[str, str | float | bool]: + def _validate_attributes(cls, v: dict[str, Any] | None) -> dict[str, str | float | bool] | None: """Sanitize attributes to match VectorStoreFileAttributes OpenAPI spec.""" + if v is None: + return None return _sanitize_vector_store_attributes(v) @@ -621,16 +643,16 @@ class VectorStoreListFilesResponse(BaseModel): :param object: Object type identifier, always "list" :param data: List of vector store file objects - :param first_id: (Optional) ID of the first file in the list for pagination - :param last_id: (Optional) ID of the last file in the list for pagination + :param first_id: ID of the first file in the list for pagination + :param last_id: ID of the last file in the list for pagination :param has_more: Whether there are more files available beyond this page """ - object: str = "list" + object: Literal["list"] = "list" data: list[VectorStoreFileObject] - first_id: str | None = None - last_id: str | None = None - has_more: bool = False + first_id: str + last_id: str + has_more: bool @json_schema_type @@ -643,8 +665,8 @@ class VectorStoreFileDeleteResponse(BaseModel): """ id: str - object: str = "vector_store.file.deleted" - deleted: bool = True + object: Literal["vector_store.file.deleted"] = "vector_store.file.deleted" + deleted: bool @json_schema_type @@ -660,7 +682,7 @@ class VectorStoreFileBatchObject(BaseModel): """ id: str - object: str = "vector_store.file_batch" + object: Literal["vector_store.file_batch"] = "vector_store.file_batch" created_at: int vector_store_id: str status: VectorStoreFileStatus @@ -673,16 +695,16 @@ class VectorStoreFilesListInBatchResponse(BaseModel): :param object: Object type identifier, always "list" :param data: List of vector store file objects in the batch - :param first_id: (Optional) ID of the first file in the list for pagination - :param last_id: (Optional) ID of the last file in the list for pagination + :param first_id: ID of the first file in the list for pagination + :param last_id: ID of the last file in the list for pagination :param has_more: Whether there are more files available beyond this page """ - object: str = "list" + object: Literal["list"] = "list" data: list[VectorStoreFileObject] - first_id: str | None = None - last_id: str | None = None - has_more: bool = False + first_id: str + last_id: str + has_more: bool # extra_body can be accessed via .model_extra @@ -691,6 +713,7 @@ class OpenAICreateVectorStoreRequestWithExtraBody(BaseModel, extra="allow"): """Request to create a vector store with extra_body support. :param name: (Optional) A name for the vector store + :param description: (Optional) Description of the vector store :param file_ids: List of file IDs to include in the vector store :param expires_after: (Optional) Expiration policy for the vector store :param chunking_strategy: (Optional) Strategy for splitting files into chunks @@ -698,24 +721,41 @@ class OpenAICreateVectorStoreRequestWithExtraBody(BaseModel, extra="allow"): """ name: str | None = None + description: str | None = None file_ids: list[str] | None = None - expires_after: dict[str, Any] | None = None + expires_after: VectorStoreExpirationAfter | None = None chunking_strategy: VectorStoreChunkingStrategy | None = None metadata: dict[str, Any] | None = None +@json_schema_type +class VectorStoreFileBatchFileEntry(BaseModel): + """A file entry for creating a vector store file batch with per-file options. + + :param file_id: A File ID that the vector store should use + :param chunking_strategy: (Optional) The chunking strategy used to chunk the file + :param attributes: (Optional) Key-value attributes to store with the file + """ + + file_id: str + chunking_strategy: VectorStoreChunkingStrategy | None = None + attributes: VectorStoreFileAttributes | None = None + + # extra_body can be accessed via .model_extra @json_schema_type class OpenAICreateVectorStoreFileBatchRequestWithExtraBody(BaseModel, extra="allow"): """Request to create a vector store file batch with extra_body support. - :param file_ids: A list of File IDs that the vector store should use + :param file_ids: A list of File IDs that the vector store should use. Mutually exclusive with files + :param files: A list of file entries with per-file options. Mutually exclusive with file_ids :param attributes: (Optional) Key-value attributes to store with the files :param chunking_strategy: (Optional) The chunking strategy used to chunk the file(s). Defaults to auto """ - file_ids: list[str] - attributes: dict[str, Any] | None = None + file_ids: list[str] = Field(default_factory=list) + files: list[VectorStoreFileBatchFileEntry] | None = None + attributes: VectorStoreFileAttributes | None = None chunking_strategy: VectorStoreChunkingStrategy | None = None @@ -762,7 +802,9 @@ class OpenAIUpdateVectorStoreRequest(BaseModel): """Request body for updating a vector store.""" name: str | None = Field(default=None, description="The new name for the vector store.") - expires_after: dict[str, Any] | None = Field(default=None, description="Expiration policy for the vector store.") + expires_after: VectorStoreExpirationAfter | None = Field( + default=None, description="Expiration policy for the vector store." + ) metadata: dict[str, Any] | None = Field(default=None, description="Metadata to associate with the vector store.") @@ -772,9 +814,9 @@ class OpenAISearchVectorStoreRequest(BaseModel): query: str | list[str] = Field(description="The search query string or list of query strings.") filters: dict[str, Any] | None = Field(default=None, description="Filters to apply to the search.") - max_num_results: int | None = Field(default=10, description="Maximum number of results to return.") + max_num_results: int = Field(default=10, ge=1, le=50, description="Maximum number of results to return.") ranking_options: SearchRankingOptions | None = Field(default=None, description="Options for ranking results.") - rewrite_query: bool | None = Field(default=False, description="Whether to rewrite the query for better results.") + rewrite_query: bool = Field(default=False, description="Whether to rewrite the query for better results.") search_mode: str | None = Field(default="vector", description="The search mode to use (e.g., 'vector', 'keyword').") @@ -783,7 +825,10 @@ class OpenAIAttachFileRequest(BaseModel): """Request body for attaching a file to a vector store.""" file_id: str = Field(description="The ID of the file to attach.") - attributes: dict[str, Any] | None = Field(default=None, description="Attributes to associate with the file.") + attributes: VectorStoreFileAttributes | None = Field( + default=None, + description="Attributes to associate with the file.", + ) chunking_strategy: VectorStoreChunkingStrategy | None = Field( default=None, description="Strategy for chunking the file content." ) @@ -824,7 +869,9 @@ class OpenAIUpdateVectorStoreFileRequest(BaseModel): "VectorStoreContent", "VectorStoreCreateRequest", "VectorStoreDeleteResponse", + "VectorStoreExpirationAfter", "VectorStoreFileAttributes", + "VectorStoreFileBatchFileEntry", "VectorStoreFileBatchObject", "VectorStoreFileContentResponse", "VectorStoreFileCounts", @@ -840,4 +887,5 @@ class OpenAIUpdateVectorStoreFileRequest(BaseModel): "VectorStoreSearchRequest", "VectorStoreSearchResponse", "VectorStoreSearchResponsePage", + "VectorStoreStatus", ] diff --git a/tests/unit/core/routers/test_vector_stores_abac.py b/tests/unit/core/routers/test_vector_stores_abac.py index 72a971f527..48d4bc98df 100644 --- a/tests/unit/core/routers/test_vector_stores_abac.py +++ b/tests/unit/core/routers/test_vector_stores_abac.py @@ -63,6 +63,9 @@ def mock_provider(): return_value=VectorStoreObject( id="vs_123", created_at=1234567890, + name="test", + usage_bytes=0, + status="completed", file_counts=VectorStoreFileCounts(completed=0, cancelled=0, failed=0, in_progress=0, total=0), ) ) @@ -70,6 +73,9 @@ def mock_provider(): return_value=VectorStoreObject( id="vs_123", created_at=1234567890, + name="test", + usage_bytes=0, + status="completed", file_counts=VectorStoreFileCounts(completed=0, cancelled=0, failed=0, in_progress=0, total=0), ) ) @@ -85,11 +91,12 @@ def mock_provider(): ), created_at=1234567890, status="completed", + usage_bytes=0, vector_store_id="vs_123", ) ) provider.openai_list_files_in_vector_store = AsyncMock( - return_value=VectorStoreListFilesResponse(data=[], has_more=False) + return_value=VectorStoreListFilesResponse(data=[], first_id="", last_id="", has_more=False) ) provider.openai_retrieve_vector_store_file = AsyncMock( return_value=VectorStoreFileObject( @@ -99,6 +106,7 @@ def mock_provider(): ), created_at=1234567890, status="completed", + usage_bytes=0, vector_store_id="vs_123", ) ) @@ -110,6 +118,7 @@ def mock_provider(): ), created_at=1234567890, status="completed", + usage_bytes=0, vector_store_id="vs_123", ) ) @@ -135,7 +144,7 @@ def mock_provider(): ) ) provider.openai_list_files_in_vector_store_file_batch = AsyncMock( - return_value=VectorStoreFilesListInBatchResponse(data=[], has_more=False) + return_value=VectorStoreFilesListInBatchResponse(data=[], first_id="", last_id="", has_more=False) ) provider.openai_cancel_vector_store_file_batch = AsyncMock( return_value=VectorStoreFileBatchObject( diff --git a/tests/unit/providers/responses/builtin/test_openai_responses_tools.py b/tests/unit/providers/responses/builtin/test_openai_responses_tools.py index b5a2a43533..68c4f93250 100644 --- a/tests/unit/providers/responses/builtin/test_openai_responses_tools.py +++ b/tests/unit/providers/responses/builtin/test_openai_responses_tools.py @@ -423,6 +423,7 @@ async def test_file_search_results_include_chunk_metadata_attributes(mock_vector # Mock vector_io to return search results with custom attributes mock_vector_io_api.openai_search_vector_store.return_value = VectorStoreSearchResponsePage( search_query=[query], + has_more=False, data=[ VectorStoreSearchResponse( file_id="doc-123", diff --git a/tests/unit/providers/vector_io/test_vector_utils.py b/tests/unit/providers/vector_io/test_vector_utils.py index 5690937957..9b8b368afb 100644 --- a/tests/unit/providers/vector_io/test_vector_utils.py +++ b/tests/unit/providers/vector_io/test_vector_utils.py @@ -135,6 +135,7 @@ def test_vector_store_file_object_attributes_validation(): created_at=1234567890, status="completed", vector_store_id="vs-123", + usage_bytes=0, ) # Lists converted to comma-separated strings @@ -161,6 +162,7 @@ def test_vector_store_file_object_attributes_constraints(): created_at=1234567890, status="completed", vector_store_id="vs-123", + usage_bytes=0, ) assert len(file_obj.attributes) == 16 # Max 16 properties @@ -173,6 +175,7 @@ def test_vector_store_file_object_attributes_constraints(): created_at=1234567890, status="completed", vector_store_id="vs-123", + usage_bytes=0, ) assert "a" * 65 not in file_obj.attributes assert "valid_key" in file_obj.attributes @@ -186,6 +189,7 @@ def test_vector_store_file_object_attributes_constraints(): created_at=1234567890, status="completed", vector_store_id="vs-123", + usage_bytes=0, ) assert len(file_obj.attributes["key"]) == 512 diff --git a/tests/unit/server/test_vector_io_fastapi_router.py b/tests/unit/server/test_vector_io_fastapi_router.py index 873711b2e4..a09a79eaf3 100644 --- a/tests/unit/server/test_vector_io_fastapi_router.py +++ b/tests/unit/server/test_vector_io_fastapi_router.py @@ -16,7 +16,9 @@ def test_vector_io_router_list_vector_stores() -> None: impl = AsyncMock() - impl.openai_list_vector_stores = AsyncMock(return_value=VectorStoreListResponse(data=[])) + impl.openai_list_vector_stores = AsyncMock( + return_value=VectorStoreListResponse(data=[], first_id="", last_id="", has_more=False) + ) router = build_fastapi_router(Api.vector_io, impl) assert router is not None @@ -28,7 +30,7 @@ def test_vector_io_router_list_vector_stores() -> None: response = client.get("/v1/vector_stores") assert response.status_code == 200 - assert response.json() == {"object": "list", "data": [], "first_id": None, "last_id": None, "has_more": False} + assert response.json() == {"object": "list", "data": [], "first_id": "", "last_id": "", "has_more": False} impl.openai_list_vector_stores.assert_awaited_once() @@ -36,7 +38,7 @@ def test_vector_io_router_list_vector_stores() -> None: def test_vector_io_router_search_vector_store_passes_body_fields() -> None: impl = AsyncMock() impl.openai_search_vector_store = AsyncMock( - return_value=VectorStoreSearchResponsePage(search_query=["hello"], data=[]) + return_value=VectorStoreSearchResponsePage(search_query=["hello"], data=[], has_more=False) ) router = build_fastapi_router(Api.vector_io, impl)