Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 105 additions & 4 deletions src/assets/api/crowdin/file-based.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21403,21 +21403,31 @@ components:
type: string
enum:
- replace
- remove
- test
path:
description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>'
description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>. The `/perUserOverrides/{userId}` and `/perUserOverrides/{userId}/*` paths accept any positive integer for `{userId}`. Creating a new override requires `{userId}` to be a project member; this requirement does not apply when editing or removing an existing one. The `remove` operation is supported for the `/perUserOverrides/{userId}` path (removes the entire per-user override) and for `/perUserOverrides/{userId}/*` field paths (removes that field; the resulting override is re-validated).'
type: string
format: json-pointer
enum:
- /preTranslationAiPromptId
- /editorSuggestionAiPromptId
- /qaCheckActionAiPromptId
- /contextReviewAiPromptId
- /dailyCostLimit
- /monthlyCostLimit
- /userDailyCostLimit
- /userMonthlyCostLimit
- '/perUserOverrides/{userId}'
- '/perUserOverrides/{userId}/costLimitMode'
- '/perUserOverrides/{userId}/dailyCostLimit'
- '/perUserOverrides/{userId}/monthlyCostLimit'
type: object
discriminator:
propertyName: op
mapping:
replace: '#/components/schemas/AiSettingsOperationReplace'
remove: '#/components/schemas/AiSettingsOperationRemove'
test: '#/components/schemas/AiSettingsOperationTest'
AiSettingsOperationReplace:
description: 'A JSON Patch `Replace` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.3)'
Expand All @@ -21433,8 +21443,21 @@ components:
oneOf:
-
type: integer
-
type: number
format: float
-
type: string
-
nullable: true
AiSettingsOperationRemove:
description: 'A JSON Patch `Remove` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.2). Supported for the `/perUserOverrides/{userId}` path (removes the entire per-user override) and `/perUserOverrides/{userId}/*` field paths (removes that field). The `costLimitMode` field cannot be removed as the override always requires it.'
type: object
allOf:
-
$ref: '#/components/schemas/AiSettingsOperation'
AiSettingsOperationTest:
description: 'A JSON Patch `Replace` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.3)'
description: 'A JSON Patch `Test` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.6)'
required:
- value
type: object
Expand All @@ -21447,6 +21470,13 @@ components:
oneOf:
-
type: integer
-
type: number
format: float
-
type: string
-
nullable: true
CrowdinAiSettingsResource:
description: 'AI Settings Resource'
type: object
Expand All @@ -21457,7 +21487,7 @@ components:
properties:
data:
$ref: '#/components/schemas/CrowdinAiSettings'
CrowdinAiSettings:
AiSettings:
title: 'AI Settings'
properties:
preTranslationAiPromptId:
Expand All @@ -21474,7 +21504,78 @@ components:
type: integer
example: 11
nullable: true
dailyCostLimit:
description: 'Maximum total AI cost the organization can spend per day. `null` means no daily limit.'
type: number
format: float
example: 100
nullable: true
monthlyCostLimit:
description: 'Maximum total AI cost the organization can spend per month. `null` means no monthly limit.'
type: number
format: float
example: 2000
nullable: true
userDailyCostLimit:
description: 'Default maximum AI cost a single user can spend per day. Applies to every user unless overridden in `perUserOverrides`. `null` means no per-user daily limit.'
type: number
format: float
example: 10
nullable: true
userMonthlyCostLimit:
description: 'Default maximum AI cost a single user can spend per month. Applies to every user unless overridden in `perUserOverrides`. `null` means no per-user monthly limit.'
type: number
format: float
example: 200
nullable: true
perUserOverrides:
description: 'Per-user cost limit overrides that take precedence over `userDailyCostLimit` and `userMonthlyCostLimit`.'
type: array
items:
$ref: '#/components/schemas/AiUserCostLimit'
type: object
AiUserCostLimit:
title: 'AI User Cost Limit'
properties:
userId:
description: 'ID of the user this cost limit override applies to'
type: integer
example: 123
costLimitMode:
description: "User AI cost limit mode\n\nValues available:\n- custom - Custom daily and monthly cost limits are applied\n- blocked - User is blocked from using AI\n- unlimited - User has no AI cost limit"
type: string
enum:
- custom
- blocked
- unlimited
example: custom
dailyCostLimit:
description: 'Maximum AI cost this user can spend per day. Applies when `costLimitMode` is `custom`. `null` for `blocked` and `unlimited` modes.'
type: number
format: float
example: 5
nullable: true
monthlyCostLimit:
description: 'Maximum AI cost this user can spend per month. Applies when `costLimitMode` is `custom`. `null` for `blocked` and `unlimited` modes.'
type: number
format: float
example: 100
nullable: true
createdAt:
type: string
format: date-time
example: '2026-05-23T11:26:54+00:00'
updatedAt:
type: string
format: date-time
example: '2026-05-23T11:26:54+00:00'
type: object
CrowdinAiSettings:
title: 'AI Settings'
type: object
allOf:
-
$ref: '#/components/schemas/AiSettings'
AiTranslateFormBase:
required:
- strings
Expand Down Expand Up @@ -22322,12 +22423,12 @@ components:
description: 'Lifecycle event URLs that changed (installed/uninstall/status)'
type: object
additionalProperties:
type: object
properties:
from:
type: string
to:
type: string
type: object
baseUrlChanged:
description: 'baseUrl change (host that serves the app)'
properties:
Expand Down
109 changes: 105 additions & 4 deletions src/assets/api/crowdin/string-based.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19631,21 +19631,31 @@ components:
type: string
enum:
- replace
- remove
- test
path:
description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>'
description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>. The `/perUserOverrides/{userId}` and `/perUserOverrides/{userId}/*` paths accept any positive integer for `{userId}`. Creating a new override requires `{userId}` to be a project member; this requirement does not apply when editing or removing an existing one. The `remove` operation is supported for the `/perUserOverrides/{userId}` path (removes the entire per-user override) and for `/perUserOverrides/{userId}/*` field paths (removes that field; the resulting override is re-validated).'
type: string
format: json-pointer
enum:
- /preTranslationAiPromptId
- /editorSuggestionAiPromptId
- /qaCheckActionAiPromptId
- /contextReviewAiPromptId
- /dailyCostLimit
- /monthlyCostLimit
- /userDailyCostLimit
- /userMonthlyCostLimit
- '/perUserOverrides/{userId}'
- '/perUserOverrides/{userId}/costLimitMode'
- '/perUserOverrides/{userId}/dailyCostLimit'
- '/perUserOverrides/{userId}/monthlyCostLimit'
type: object
discriminator:
propertyName: op
mapping:
replace: '#/components/schemas/AiSettingsOperationReplace'
remove: '#/components/schemas/AiSettingsOperationRemove'
test: '#/components/schemas/AiSettingsOperationTest'
AiSettingsOperationReplace:
description: 'A JSON Patch `Replace` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.3)'
Expand All @@ -19661,8 +19671,21 @@ components:
oneOf:
-
type: integer
-
type: number
format: float
-
type: string
-
nullable: true
AiSettingsOperationRemove:
description: 'A JSON Patch `Remove` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.2). Supported for the `/perUserOverrides/{userId}` path (removes the entire per-user override) and `/perUserOverrides/{userId}/*` field paths (removes that field). The `costLimitMode` field cannot be removed as the override always requires it.'
type: object
allOf:
-
$ref: '#/components/schemas/AiSettingsOperation'
AiSettingsOperationTest:
description: 'A JSON Patch `Replace` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.3)'
description: 'A JSON Patch `Test` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.6)'
required:
- value
type: object
Expand All @@ -19675,6 +19698,13 @@ components:
oneOf:
-
type: integer
-
type: number
format: float
-
type: string
-
nullable: true
CrowdinAiSettingsResource:
description: 'AI Settings Resource'
type: object
Expand All @@ -19685,7 +19715,7 @@ components:
properties:
data:
$ref: '#/components/schemas/CrowdinAiSettings'
CrowdinAiSettings:
AiSettings:
title: 'AI Settings'
properties:
preTranslationAiPromptId:
Expand All @@ -19702,7 +19732,78 @@ components:
type: integer
example: 11
nullable: true
dailyCostLimit:
description: 'Maximum total AI cost the organization can spend per day. `null` means no daily limit.'
type: number
format: float
example: 100
nullable: true
monthlyCostLimit:
description: 'Maximum total AI cost the organization can spend per month. `null` means no monthly limit.'
type: number
format: float
example: 2000
nullable: true
userDailyCostLimit:
description: 'Default maximum AI cost a single user can spend per day. Applies to every user unless overridden in `perUserOverrides`. `null` means no per-user daily limit.'
type: number
format: float
example: 10
nullable: true
userMonthlyCostLimit:
description: 'Default maximum AI cost a single user can spend per month. Applies to every user unless overridden in `perUserOverrides`. `null` means no per-user monthly limit.'
type: number
format: float
example: 200
nullable: true
perUserOverrides:
description: 'Per-user cost limit overrides that take precedence over `userDailyCostLimit` and `userMonthlyCostLimit`.'
type: array
items:
$ref: '#/components/schemas/AiUserCostLimit'
type: object
AiUserCostLimit:
title: 'AI User Cost Limit'
properties:
userId:
description: 'ID of the user this cost limit override applies to'
type: integer
example: 123
costLimitMode:
description: "User AI cost limit mode\n\nValues available:\n- custom - Custom daily and monthly cost limits are applied\n- blocked - User is blocked from using AI\n- unlimited - User has no AI cost limit"
type: string
enum:
- custom
- blocked
- unlimited
example: custom
dailyCostLimit:
description: 'Maximum AI cost this user can spend per day. Applies when `costLimitMode` is `custom`. `null` for `blocked` and `unlimited` modes.'
type: number
format: float
example: 5
nullable: true
monthlyCostLimit:
description: 'Maximum AI cost this user can spend per month. Applies when `costLimitMode` is `custom`. `null` for `blocked` and `unlimited` modes.'
type: number
format: float
example: 100
nullable: true
createdAt:
type: string
format: date-time
example: '2026-05-23T11:26:54+00:00'
updatedAt:
type: string
format: date-time
example: '2026-05-23T11:26:54+00:00'
type: object
CrowdinAiSettings:
title: 'AI Settings'
type: object
allOf:
-
$ref: '#/components/schemas/AiSettings'
AiTranslateFormBase:
required:
- strings
Expand Down Expand Up @@ -20227,12 +20328,12 @@ components:
description: 'Lifecycle event URLs that changed (installed/uninstall/status)'
type: object
additionalProperties:
type: object
properties:
from:
type: string
to:
type: string
type: object
baseUrlChanged:
description: 'baseUrl change (host that serves the app)'
properties:
Expand Down
Loading