diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index 46995369..c82d5c3b 100644 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -10856,7 +10856,7 @@ components: type: 'langfuse' properties: api_key_hashes: - description: 'Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided.' + description: 'Optional allowlist of OpenRouter API key hashes whose traffic is forwarded. `null` or omitted means all keys. Must contain at least one hash if provided. A workspace-scoped management key can only name API keys in its own workspace; any other hash returns 400.' example: null items: type: 'string' @@ -10946,7 +10946,7 @@ components: example: 'langfuse' type: 'string' workspace_id: - description: 'Optional workspace ID. Defaults to the authenticated entity''s default workspace.' + description: 'Optional workspace ID. Defaults to the authenticated entity''s default workspace, or a workspace-scoped management key''s own workspace.' example: '550e8400-e29b-41d4-a716-446655440000' format: 'uuid' type: 'string' @@ -12604,7 +12604,7 @@ components: type: 'object' ExtractionAsset: additionalProperties: false - description: 'An image or PDF sent once and referenced by its key in the `assets` map. `data_base64` is the file in standard base64 with no `data:` prefix. PDF is read by document models only.' + description: 'An image or PDF sent once and referenced by its key in the `assets` map. `data_base64` is the file in standard base64 with no `data:` prefix. Which formats are read is model-specific: a format the model cannot read fails with a 400.' properties: data_base64: minLength: 1 @@ -12615,6 +12615,7 @@ components: - 'png' - 'jpg' - 'jpeg' + - 'webp' - 'pdf' type: 'string' type: @@ -12646,7 +12647,7 @@ components: - 'document' type: 'string' span: - description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' + description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once. Absent for an answer that has no offsets in the state text, for example a null answer, one read from an image or a document, or one the provider returned without offsets that delimit it.' items: type: 'integer' maxItems: 2 @@ -12684,6 +12685,9 @@ components: enum: - 'date' type: 'string' + unit: + description: 'Unit label for the value.' + type: 'string' required: - 'type' type: 'object' @@ -12707,7 +12711,7 @@ components: - 'document' type: 'string' span: - description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' + description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once. Absent for an answer that has no offsets in the state text, for example a null answer, one read from an image or a document, or one the provider returned without offsets that delimit it.' items: type: 'integer' maxItems: 2 @@ -12745,6 +12749,9 @@ components: enum: - 'datetime' type: 'string' + unit: + description: 'Unit label for the value.' + type: 'string' required: - 'type' type: 'object' @@ -12769,7 +12776,7 @@ components: - 'document' type: 'string' span: - description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' + description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once. Absent for an answer that has no offsets in the state text, for example a null answer, one read from an image or a document, or one the provider returned without offsets that delimit it.' items: type: 'integer' maxItems: 2 @@ -12807,6 +12814,7 @@ components: description: 'What the field should contain.' type: 'string' integer: + description: 'Whole numbers only.' type: 'boolean' null_threshold: description: 'Probability of null above which `value` is null. Default 0.5.' @@ -12917,7 +12925,7 @@ components: type: 'number' - type: 'string' null_threshold: - description: 'Probability of null above which `value` is null. Default 0.5.' + description: 'Not read on this field type: no model takes a null threshold here, and a request that sets it fails with a 400.' format: 'double' maximum: 1 minimum: 0 @@ -12943,6 +12951,7 @@ components: - 'estimate' type: 'string' unit: + description: 'Unit label for the value.' type: 'string' required: - 'type' @@ -13059,7 +13068,7 @@ components: type: 'number' - type: 'string' null_threshold: - description: 'Probability of null above which `value` is null. Default 0.5.' + description: 'Not read on this field type: no model takes a null threshold here, and a request that sets it fails with a 400.' format: 'double' maximum: 1 minimum: 0 @@ -13085,6 +13094,7 @@ components: - 'forecast' type: 'string' unit: + description: 'Unit label for the value.' type: 'string' required: - 'type' @@ -13171,7 +13181,7 @@ components: - 'document' type: 'string' spans: - description: 'One span per item of `value`, in the same order; null for an item that has no offsets in the state text (read from an image or a document).' + description: 'One span per item of `value`, in the same order; null for an item that has no offsets in the state text: one read from an image or a document, or one the provider returned without offsets that delimit it.' items: description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' items: @@ -13214,6 +13224,9 @@ components: instructions: description: 'What the field should contain.' type: 'string' + integer: + description: 'Whole numbers only. Lists of numbers only.' + type: 'boolean' items: enum: - 'text' @@ -13230,6 +13243,9 @@ components: enum: - 'list' type: 'string' + unit: + description: 'Unit label for the value.' + type: 'string' required: - 'type' - 'items' @@ -13255,7 +13271,7 @@ components: - 'document' type: 'string' span: - description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' + description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once. Absent for an answer that has no offsets in the state text, for example a null answer, one read from an image or a document, or one the provider returned without offsets that delimit it.' items: type: 'integer' maxItems: 2 @@ -13290,6 +13306,7 @@ components: description: 'What the field should contain.' type: 'string' integer: + description: 'Whole numbers only.' type: 'boolean' null_threshold: description: 'Probability of null above which `value` is null. Default 0.5.' @@ -13302,6 +13319,7 @@ components: - 'number' type: 'string' unit: + description: 'Unit label for the value.' type: 'string' required: - 'type' @@ -13332,7 +13350,7 @@ components: assets: additionalProperties: $ref: '#/components/schemas/ExtractionAsset' - description: 'Assets keyed by reference string. Write a reference wherever the asset belongs in `state` or a field `instructions`; every asset must be referenced at least once. A `state` that is exactly the sole asset''s key carries no text of its own and is read as file-only. A model that reads either text or a document per request, not both (ScaleDown Extract with a PDF), needs that form: any other text around the key is state text and is rejected with 400.' + description: 'Assets keyed by reference string. Write a reference wherever the asset belongs in `state` or a field `instructions`; every asset must be referenced at least once, unless `state` is empty or omitted, in which case the assets are read without a reference. A `state` that is exactly the sole asset''s key carries no text of its own and is read as file-only. A model that reads either text or a document per request, not both (ScaleDown Extract with a PDF), takes that form or an empty or omitted `state`: any other text around the key is state text and is rejected with 400.' type: 'object' fields: additionalProperties: @@ -13377,7 +13395,8 @@ components: maxLength: 256 type: 'string' state: - description: 'The text to read from. May be empty only when the request carries image assets.' + default: '' + description: 'The text to read from. May be empty or omitted only when the request carries assets, which are then read without being referenced by key.' type: 'string' trace: $ref: '#/components/schemas/TraceConfig' @@ -13386,7 +13405,6 @@ components: type: 'string' required: - 'model' - - 'state' - 'fields' type: 'object' ExtractionsResponse: @@ -13480,7 +13498,7 @@ components: - 'document' type: 'string' span: - description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' + description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once. Absent for an answer that has no offsets in the state text, for example a null answer, one read from an image or a document, or one the provider returned without offsets that delimit it.' items: type: 'integer' maxItems: 2 @@ -13518,6 +13536,9 @@ components: enum: - 'text' type: 'string' + unit: + description: 'Unit label for the value.' + type: 'string' required: - 'type' type: 'object' @@ -13541,7 +13562,7 @@ components: - 'document' type: 'string' span: - description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once.' + description: 'Unicode code point offsets [start, end) into the state text: index code points (not UTF-16 code units or UTF-8 bytes), so an emoji or accented letter counts once. Absent for an answer that has no offsets in the state text, for example a null answer, one read from an image or a document, or one the provider returned without offsets that delimit it.' items: type: 'integer' maxItems: 2 @@ -13579,6 +13600,9 @@ components: enum: - 'time' type: 'string' + unit: + description: 'Unit label for the value.' + type: 'string' required: - 'type' type: 'object' @@ -36575,7 +36599,7 @@ components: name: 'Updated Langfuse' properties: api_key_hashes: - description: 'Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value. Must contain at least one hash if provided.' + description: 'Optional allowlist of OpenRouter API key hashes. `null` clears the filter (all keys). Omitting leaves the current value, including any API key from another workspace that an organization-scoped key attached. Must contain at least one hash if provided. A workspace-scoped management key can only name API keys in its own workspace; any other hash returns 400.' example: null items: type: 'string' @@ -52375,7 +52399,7 @@ paths: - 'OAuth' /observability/destinations: get: - description: 'List the observability destinations configured for the authenticated entity''s default workspace. Use the `workspace_id` query parameter to scope the result to a different workspace. Only destinations with stable release status are surfaced — destinations of other types are excluded. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + description: 'List the observability destinations configured for the authenticated entity''s default workspace, or a workspace-scoped management key''s own workspace. Use the `workspace_id` query parameter to scope the result to a different workspace. A workspace-scoped management key can only list its own workspace; any other `workspace_id` returns 403. Only destinations with stable release status are surfaced — destinations of other types are excluded. [Management key](/docs/guides/overview/auth/management-api-keys) required.' operationId: 'listObservabilityDestinations' parameters: - description: 'Number of records to skip for pagination' @@ -52401,12 +52425,12 @@ paths: maximum: 100 minimum: 1 type: 'integer' - - description: 'Optional workspace ID to filter by. Defaults to the authenticated entity''s default workspace.' + - description: 'Optional workspace ID to filter by. Defaults to the authenticated entity''s default workspace, or a workspace-scoped management key''s own workspace.' in: 'query' name: 'workspace_id' required: false schema: - description: 'Optional workspace ID to filter by. Defaults to the authenticated entity''s default workspace.' + description: 'Optional workspace ID to filter by. Defaults to the authenticated entity''s default workspace, or a workspace-scoped management key''s own workspace.' example: '550e8400-e29b-41d4-a716-446655440000' format: 'uuid' type: 'string' @@ -52497,7 +52521,7 @@ paths: results: '$.data' type: 'offsetLimit' post: - description: 'Create a new observability destination. A maximum of 5 destinations per type is allowed. Defaults to the authenticated entity''s default workspace; use the `workspace_id` body field to scope to a different workspace. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + description: 'Create a new observability destination. A maximum of 5 destinations per type is allowed. Defaults to the authenticated entity''s default workspace, or a workspace-scoped management key''s own workspace; use the `workspace_id` body field to scope to a different workspace. A workspace-scoped management key can only create in its own workspace; any other `workspace_id` returns 403. [Management key](/docs/guides/overview/auth/management-api-keys) required.' operationId: 'createObservabilityDestination' requestBody: content: @@ -52598,7 +52622,7 @@ paths: x-speakeasy-name-override: 'create' /observability/destinations/{id}: delete: - description: 'Delete an existing observability destination. This performs a soft delete. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + description: 'Delete an existing observability destination. This performs a soft delete. A workspace-scoped management key only reaches destinations in its own workspace; any other `id` returns 404. [Management key](/docs/guides/overview/auth/management-api-keys) required.' operationId: 'deleteObservabilityDestination' parameters: - description: 'The destination ID (UUID).' @@ -52664,7 +52688,7 @@ paths: - 'Observability' x-speakeasy-name-override: 'delete' get: - description: 'Fetch a single observability destination by its UUID. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + description: 'Fetch a single observability destination by its UUID. A workspace-scoped management key only reaches destinations in its own workspace; any other `id` returns 404. [Management key](/docs/guides/overview/auth/management-api-keys) required.' operationId: 'getObservabilityDestination' parameters: - description: 'The destination ID (UUID).' @@ -52751,7 +52775,7 @@ paths: - 'Observability' x-speakeasy-name-override: 'get' patch: - description: 'Update an existing observability destination. Only the fields provided in the request body are updated. [Management key](/docs/guides/overview/auth/management-api-keys) required.' + description: 'Update an existing observability destination. Only the fields provided in the request body are updated. A workspace-scoped management key only reaches destinations in its own workspace; any other `id` returns 404. [Management key](/docs/guides/overview/auth/management-api-keys) required.' operationId: 'updateObservabilityDestination' parameters: - description: 'The destination ID (UUID).'