From 82c52120c8236cac4743ad8c1e89c1615c210c1b Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 09:53:30 +0200 Subject: [PATCH 01/17] chore(main): release typescript 3.30.0 (#1338) --- clients/typescript/CHANGELOG.md | 13 +++++++++++++ openapi-generator/typescript_lang.yaml | 2 +- release-please/manifest-typescript.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/clients/typescript/CHANGELOG.md b/clients/typescript/CHANGELOG.md index 5c292e2c1..43ffe4fb6 100644 --- a/clients/typescript/CHANGELOG.md +++ b/clients/typescript/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [3.30.0](https://github.com/phrase/strings-openapi/compare/typescript-v3.29.0...typescript-v3.30.0) (2026-10-23) + + +### Features + +* **API:** add terms_count field to glossary responses #STRINGS-3924 ([#1334](https://github.com/phrase/strings-openapi/issues/1334)) ([9eab4dc](https://github.com/phrase/strings-openapi/commit/9eab4dcc28074b581934d603ec6f653efe100d72)) + + +### Bug Fixes + +* **API:** make clearable string fields on update endpoints nullable #STRINGS-3652 ([#1326](https://github.com/phrase/strings-openapi/issues/1326)) ([3eb4b6f](https://github.com/phrase/strings-openapi/commit/3eb4b6fe2481f5ad199ae5e3c88eaecabc4d62da)) +* **API:** make translation content and key description nullable #STRINGS-3652 ([#1325](https://github.com/phrase/strings-openapi/issues/1325)) ([2f18702](https://github.com/phrase/strings-openapi/commit/2f1870215d4c84a382ab3cfa76dd9f922dad5903)) + ## [3.29.0](https://github.com/phrase/strings-openapi/compare/typescript-v3.28.0...typescript-v3.29.0) (2026-10-22) diff --git a/openapi-generator/typescript_lang.yaml b/openapi-generator/typescript_lang.yaml index 655600d56..2a1d6c6a0 100644 --- a/openapi-generator/typescript_lang.yaml +++ b/openapi-generator/typescript_lang.yaml @@ -2,7 +2,7 @@ generatorName: typescript-fetch outputDir: clients/typescript npmName: phrase-js -npmVersion: 3.29.0 +npmVersion: 3.30.0 typescriptThreePlus: true templateDir: openapi-generator/templates/typescript-fetch repositoryUrl: https://github.com/phrase/phrase-js diff --git a/release-please/manifest-typescript.json b/release-please/manifest-typescript.json index e5b34d4e3..1f11f5b3f 100644 --- a/release-please/manifest-typescript.json +++ b/release-please/manifest-typescript.json @@ -1,3 +1,3 @@ { - ".": "3.29.0" + ".": "3.30.0" } \ No newline at end of file From eb54f6f2d77284348848128c3512779163223998 Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 09:54:01 +0200 Subject: [PATCH 02/17] chore(main): release php 3.29.0 (#1339) --- clients/php/CHANGELOG.md | 13 +++++++++++++ openapi-generator/php_lang.yaml | 2 +- release-please/manifest-php.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/clients/php/CHANGELOG.md b/clients/php/CHANGELOG.md index b0153debe..4afaa828e 100644 --- a/clients/php/CHANGELOG.md +++ b/clients/php/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [3.29.0](https://github.com/phrase/strings-openapi/compare/php-v3.28.0...php-v3.29.0) (2026-10-23) + + +### Features + +* **API:** add terms_count field to glossary responses #STRINGS-3924 ([#1334](https://github.com/phrase/strings-openapi/issues/1334)) ([9eab4dc](https://github.com/phrase/strings-openapi/commit/9eab4dcc28074b581934d603ec6f653efe100d72)) + + +### Bug Fixes + +* **API:** make clearable string fields on update endpoints nullable #STRINGS-3652 ([#1326](https://github.com/phrase/strings-openapi/issues/1326)) ([3eb4b6f](https://github.com/phrase/strings-openapi/commit/3eb4b6fe2481f5ad199ae5e3c88eaecabc4d62da)) +* **API:** make translation content and key description nullable #STRINGS-3652 ([#1325](https://github.com/phrase/strings-openapi/issues/1325)) ([2f18702](https://github.com/phrase/strings-openapi/commit/2f1870215d4c84a382ab3cfa76dd9f922dad5903)) + ## [3.28.0](https://github.com/phrase/strings-openapi/compare/php-v3.27.0...php-v3.28.0) (2026-10-22) diff --git a/openapi-generator/php_lang.yaml b/openapi-generator/php_lang.yaml index 9d08c6c50..d78225226 100644 --- a/openapi-generator/php_lang.yaml +++ b/openapi-generator/php_lang.yaml @@ -2,7 +2,7 @@ generatorName: php outputDir: clients/php invokerPackage: Phrase -artifactVersion: 3.28.0 +artifactVersion: 3.29.0 gitUserId: phrase gitRepoId: phrase-php packageName: phrase-php diff --git a/release-please/manifest-php.json b/release-please/manifest-php.json index 53e0b7425..e5b34d4e3 100644 --- a/release-please/manifest-php.json +++ b/release-please/manifest-php.json @@ -1,3 +1,3 @@ { - ".": "3.28.0" + ".": "3.29.0" } \ No newline at end of file From 49238d2bdf1d06af97b573fffe17df3fb25c3f33 Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 09:54:11 +0200 Subject: [PATCH 03/17] chore(main): release java 3.29.0 (#1340) --- clients/java/CHANGELOG.md | 13 +++++++++++++ openapi-generator/java_lang.yaml | 2 +- release-please/manifest-java.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/clients/java/CHANGELOG.md b/clients/java/CHANGELOG.md index 4881bcf0e..efa39d830 100644 --- a/clients/java/CHANGELOG.md +++ b/clients/java/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [3.29.0](https://github.com/phrase/strings-openapi/compare/java-v3.28.0...java-v3.29.0) (2026-10-22) + + +### Features + +* **API:** add terms_count field to glossary responses #STRINGS-3924 ([#1334](https://github.com/phrase/strings-openapi/issues/1334)) ([9eab4dc](https://github.com/phrase/strings-openapi/commit/9eab4dcc28074b581934d603ec6f653efe100d72)) + + +### Bug Fixes + +* **API:** make clearable string fields on update endpoints nullable #STRINGS-3652 ([#1326](https://github.com/phrase/strings-openapi/issues/1326)) ([3eb4b6f](https://github.com/phrase/strings-openapi/commit/3eb4b6fe2481f5ad199ae5e3c88eaecabc4d62da)) +* **API:** make translation content and key description nullable #STRINGS-3652 ([#1325](https://github.com/phrase/strings-openapi/issues/1325)) ([2f18702](https://github.com/phrase/strings-openapi/commit/2f1870215d4c84a382ab3cfa76dd9f922dad5903)) + ## [3.28.0](https://github.com/phrase/strings-openapi/compare/java-v3.27.0...java-v3.28.0) (2026-10-22) diff --git a/openapi-generator/java_lang.yaml b/openapi-generator/java_lang.yaml index 2b71e5196..3e2a81184 100644 --- a/openapi-generator/java_lang.yaml +++ b/openapi-generator/java_lang.yaml @@ -4,7 +4,7 @@ outputDir: clients/java apiPackage: com.phrase.client.api artifactId: phrase-java artifactUrl: https://developers.phrase.com -artifactVersion: 3.28.0 +artifactVersion: 3.29.0 artifactDescription: Java Client for Phrase Strings API developerEmail: support@phrase.com developerName: Phrase diff --git a/release-please/manifest-java.json b/release-please/manifest-java.json index 53e0b7425..e5b34d4e3 100644 --- a/release-please/manifest-java.json +++ b/release-please/manifest-java.json @@ -1,3 +1,3 @@ { - ".": "3.28.0" + ".": "3.29.0" } \ No newline at end of file From 849b931621563796dd716430ab3a1d2ac3fa1c24 Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 10:35:47 +0200 Subject: [PATCH 04/17] chore(main): release python 3.31.0 (#1337) --- clients/python/CHANGELOG.md | 13 +++++++++++++ openapi-generator/python_lang.yaml | 2 +- release-please/manifest-python.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/clients/python/CHANGELOG.md b/clients/python/CHANGELOG.md index d31d3b6dd..db9ad55f1 100644 --- a/clients/python/CHANGELOG.md +++ b/clients/python/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [3.31.0](https://github.com/phrase/strings-openapi/compare/python-v3.30.0...python-v3.31.0) (2026-10-23) + + +### Features + +* **API:** add terms_count field to glossary responses #STRINGS-3924 ([#1334](https://github.com/phrase/strings-openapi/issues/1334)) ([9eab4dc](https://github.com/phrase/strings-openapi/commit/9eab4dcc28074b581934d603ec6f653efe100d72)) + + +### Bug Fixes + +* **API:** make clearable string fields on update endpoints nullable #STRINGS-3652 ([#1326](https://github.com/phrase/strings-openapi/issues/1326)) ([3eb4b6f](https://github.com/phrase/strings-openapi/commit/3eb4b6fe2481f5ad199ae5e3c88eaecabc4d62da)) +* **API:** make translation content and key description nullable #STRINGS-3652 ([#1325](https://github.com/phrase/strings-openapi/issues/1325)) ([2f18702](https://github.com/phrase/strings-openapi/commit/2f1870215d4c84a382ab3cfa76dd9f922dad5903)) + ## [3.30.0](https://github.com/phrase/strings-openapi/compare/python-v3.29.0...python-v3.30.0) (2026-10-22) diff --git a/openapi-generator/python_lang.yaml b/openapi-generator/python_lang.yaml index e3b43d275..424244e0e 100644 --- a/openapi-generator/python_lang.yaml +++ b/openapi-generator/python_lang.yaml @@ -3,7 +3,7 @@ generatorName: python outputDir: clients/python packageName: phrase_api projectName: phrase-api -packageVersion: 3.30.0 +packageVersion: 3.31.0 packageUrl: https://github.com/phrase/phrase-python gitUserId: phrase gitRepoId: phrase-python diff --git a/release-please/manifest-python.json b/release-please/manifest-python.json index 1f11f5b3f..1287b3ed2 100644 --- a/release-please/manifest-python.json +++ b/release-please/manifest-python.json @@ -1,3 +1,3 @@ { - ".": "3.30.0" + ".": "3.31.0" } \ No newline at end of file From 8393a0f02ea23cb33c5058f61659102a8714c91b Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 10:35:55 +0200 Subject: [PATCH 05/17] chore(main): release go 4.35.0 (#1341) --- clients/cli/go.mod | 2 +- clients/go/CHANGELOG.md | 13 +++++++++++++ openapi-generator/go_lang.yaml | 2 +- release-please/manifest-go.json | 2 +- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/clients/cli/go.mod b/clients/cli/go.mod index 97f621f8e..80abd9aba 100644 --- a/clients/cli/go.mod +++ b/clients/cli/go.mod @@ -9,7 +9,7 @@ require ( github.com/daviddengcn/go-colortext v1.0.0 github.com/jpillora/backoff v1.0.0 github.com/mitchellh/mapstructure v1.5.0 - github.com/phrase/phrase-go/v4 v4.34.0 // x-release-please-version + github.com/phrase/phrase-go/v4 v4.35.0 // x-release-please-version github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.7.1 golang.org/x/sync v0.23.0 diff --git a/clients/go/CHANGELOG.md b/clients/go/CHANGELOG.md index 1d93fdd5a..7d74a242a 100644 --- a/clients/go/CHANGELOG.md +++ b/clients/go/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [4.35.0](https://github.com/phrase/strings-openapi/compare/go-v4.34.0...go-v4.35.0) (2026-10-23) + + +### Features + +* **API:** add terms_count field to glossary responses #STRINGS-3924 ([#1334](https://github.com/phrase/strings-openapi/issues/1334)) ([9eab4dc](https://github.com/phrase/strings-openapi/commit/9eab4dcc28074b581934d603ec6f653efe100d72)) + + +### Bug Fixes + +* **API:** make clearable string fields on update endpoints nullable #STRINGS-3652 ([#1326](https://github.com/phrase/strings-openapi/issues/1326)) ([3eb4b6f](https://github.com/phrase/strings-openapi/commit/3eb4b6fe2481f5ad199ae5e3c88eaecabc4d62da)) +* **API:** make translation content and key description nullable #STRINGS-3652 ([#1325](https://github.com/phrase/strings-openapi/issues/1325)) ([2f18702](https://github.com/phrase/strings-openapi/commit/2f1870215d4c84a382ab3cfa76dd9f922dad5903)) + ## [4.34.0](https://github.com/phrase/strings-openapi/compare/go-v4.33.0...go-v4.34.0) (2026-10-22) diff --git a/openapi-generator/go_lang.yaml b/openapi-generator/go_lang.yaml index 232af9ad3..8014b4552 100644 --- a/openapi-generator/go_lang.yaml +++ b/openapi-generator/go_lang.yaml @@ -2,7 +2,7 @@ generatorName: go outputDir: clients/go packageName: phrase -packageVersion: 4.34.0 +packageVersion: 4.35.0 gitUserId: phrase gitRepoId: phrase-go httpUserAgent: Phrase Strings go diff --git a/release-please/manifest-go.json b/release-please/manifest-go.json index 7dc692e1f..25e9535f2 100644 --- a/release-please/manifest-go.json +++ b/release-please/manifest-go.json @@ -1,3 +1,3 @@ { - ".": "4.34.0" + ".": "4.35.0" } \ No newline at end of file From 797c2c268aced39b273dc856d7530ea7274a5c6c Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 10:36:14 +0200 Subject: [PATCH 06/17] chore(main): release cli 2.71.0 (#1335) --- clients/cli/CHANGELOG.md | 13 +++++++++++++ openapi-generator/cli_lang.yaml | 2 +- release-please/manifest-cli.json | 2 +- 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/clients/cli/CHANGELOG.md b/clients/cli/CHANGELOG.md index 914e3bb14..996e3b82e 100644 --- a/clients/cli/CHANGELOG.md +++ b/clients/cli/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [2.71.0](https://github.com/phrase/strings-openapi/compare/cli-v2.70.0...cli-v2.71.0) (2026-10-23) + + +### Features + +* **API:** add terms_count field to glossary responses #STRINGS-3924 ([#1334](https://github.com/phrase/strings-openapi/issues/1334)) ([9eab4dc](https://github.com/phrase/strings-openapi/commit/9eab4dcc28074b581934d603ec6f653efe100d72)) + + +### Bug Fixes + +* **API:** make clearable string fields on update endpoints nullable #STRINGS-3652 ([#1326](https://github.com/phrase/strings-openapi/issues/1326)) ([3eb4b6f](https://github.com/phrase/strings-openapi/commit/3eb4b6fe2481f5ad199ae5e3c88eaecabc4d62da)) +* **API:** make translation content and key description nullable #STRINGS-3652 ([#1325](https://github.com/phrase/strings-openapi/issues/1325)) ([2f18702](https://github.com/phrase/strings-openapi/commit/2f1870215d4c84a382ab3cfa76dd9f922dad5903)) + ## [2.70.0](https://github.com/phrase/strings-openapi/compare/cli-v2.69.1...cli-v2.70.0) (2026-10-22) diff --git a/openapi-generator/cli_lang.yaml b/openapi-generator/cli_lang.yaml index fc426bbe5..ab0ecc565 100644 --- a/openapi-generator/cli_lang.yaml +++ b/openapi-generator/cli_lang.yaml @@ -2,6 +2,6 @@ generatorName: go outputDir: clients/cli packageName: phrase -packageVersion: 2.70.0 +packageVersion: 2.71.0 templateDir: openapi-generator/templates/cli apiNameSuffix: Api diff --git a/release-please/manifest-cli.json b/release-please/manifest-cli.json index 8b21bb5a3..d11ae99e5 100644 --- a/release-please/manifest-cli.json +++ b/release-please/manifest-cli.json @@ -1,3 +1,3 @@ { - ".": "2.70.0" + ".": "2.71.0" } From b5a07decfa83958869e9ce9363d45646cc8fa523 Mon Sep 17 00:00:00 2001 From: Phrase Date: Fri, 23 Oct 2026 11:10:06 +0200 Subject: [PATCH 07/17] feat(API): add uploads array to repo sync import event show response #STRINGS-3739 (#1342) Co-authored-by: github-actions[bot] --- doc/compiled.json | 32 ++++++++++++++++++++++++++++++++ paths/repo_sync_events/show.yaml | 7 +++++++ schemas/repo_sync_event.yaml | 31 +++++++++++++++++++++++++++++++ 3 files changed, 70 insertions(+) diff --git a/doc/compiled.json b/doc/compiled.json index 7754eed3d..fa311a5e1 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -5221,6 +5221,32 @@ "items": { "type": "string" } + }, + "uploads": { + "type": "array", + "nullable": true, + "description": "The uploads associated with this import event, or `null` if no upload batch has been created yet. Each entry identifies a single file upload by its public code (`id`) and its current public state (`state`). Present on show responses only; absent from list responses.\nPossible `state` values: `initialized`, `waiting_for_preview`, `processing`, `success`, `error`.\n", + "items": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The upload's public identifier (code).", + "example": "abcd1234" + }, + "state": { + "type": "string", + "description": "The upload's current public state. Multiple internal processing states are collapsed to `processing`; both internal error states are collapsed to `error`.\n", + "enum": [ + "initialized", + "waiting_for_preview", + "processing", + "success", + "error" + ] + } + } + } } }, "example": { @@ -26773,6 +26799,12 @@ "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "description": "Forbidden. Possible causes: missing or insufficient OAuth scope (requires `read`); the `gitlab_sync` plan feature is not enabled for the account; the authenticated user does not have read access to Git Syncs on this account.\n" + }, "404": { "$ref": "#/components/responses/404" }, diff --git a/paths/repo_sync_events/show.yaml b/paths/repo_sync_events/show.yaml index 0a9852098..1d3e6f28c 100644 --- a/paths/repo_sync_events/show.yaml +++ b/paths/repo_sync_events/show.yaml @@ -25,6 +25,13 @@ responses: "$ref": "../../headers.yaml#/X-Rate-Limit-Reset" '400': "$ref": "../../responses.yaml#/400" + '401': + "$ref": "../../responses.yaml#/401" + '403': + description: > + Forbidden. Possible causes: missing or insufficient OAuth scope (requires + `read`); the `gitlab_sync` plan feature is not enabled for the account; + the authenticated user does not have read access to Git Syncs on this account. '404': "$ref": "../../responses.yaml#/404" '429': diff --git a/schemas/repo_sync_event.yaml b/schemas/repo_sync_event.yaml index 6dd82ce00..59ad4a416 100644 --- a/schemas/repo_sync_event.yaml +++ b/schemas/repo_sync_event.yaml @@ -25,6 +25,37 @@ repo_sync_event: type: array items: type: string + uploads: + type: array + nullable: true + description: > + The uploads associated with this import event, or `null` if no + upload batch has been created yet. Each entry identifies a single + file upload by its public code (`id`) and its current public + state (`state`). Present on show responses only; absent from list + responses. + + Possible `state` values: `initialized`, `waiting_for_preview`, + `processing`, `success`, `error`. + items: + type: object + properties: + id: + type: string + description: The upload's public identifier (code). + example: abcd1234 + state: + type: string + description: > + The upload's current public state. Multiple internal + processing states are collapsed to `processing`; both + internal error states are collapsed to `error`. + enum: + - initialized + - waiting_for_preview + - processing + - success + - error example: type: import created_at: '2015-01-28T09:52:53Z' From b546c985ae5d8c652a0f4dee0feb6cbad2dfda1c Mon Sep 17 00:00:00 2001 From: jablan Date: Fri, 23 Oct 2026 14:19:32 +0200 Subject: [PATCH 08/17] docs(API): document key and locale query qualifiers for translations #STRINGS-3829 (#1331) Co-authored-by: Claude Sonnet 5.5 --- doc/compiled.json | 86 +++++++++++++------------- parameters.yaml | 68 ++++++++++++++++++++ paths/translations/batch_exclude.yaml | 17 +---- paths/translations/batch_include.yaml | 16 +---- paths/translations/batch_review.yaml | 17 +---- paths/translations/batch_unreview.yaml | 16 +---- paths/translations/batch_unverify.yaml | 21 ++----- paths/translations/batch_verify.yaml | 16 +---- paths/translations/index.yaml | 21 +------ paths/translations/index_keys.yaml | 18 +----- paths/translations/index_locale.yaml | 19 +----- paths/translations/search.yaml | 17 +---- schemas.yaml | 2 + schemas/translation_query.yaml | 22 +++++++ 14 files changed, 149 insertions(+), 207 deletions(-) create mode 100644 schemas/translation_query.yaml diff --git a/doc/compiled.json b/doc/compiled.json index fa311a5e1..214e2cdf8 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -3127,6 +3127,11 @@ } } }, + "translation_query": { + "type": "string", + "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of translation ids\n* `key.id:key_id,...` for queries on a comma-separated list of translation key ids\n* `key.name:key_name,...` for queries on a comma-separated list of translation key names\n* `locale.id:locale_id,...` for queries on a comma-separated list of locale ids\n* `locale.name:locale_name,...` for queries on a comma-separated list of locale names\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp\n\nFind more examples [here](/en/api/strings/usage-examples).\n", + "example": "key.name:home.title,home.subtitle locale.name:de-DE tags:feature" + }, "translation_version": { "type": "object", "title": "translation_version", @@ -5853,6 +5858,33 @@ "type": "string" } }, + "translations_q": { + "in": "query", + "name": "q", + "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of translation ids\n* `key.id:key_id,...` for queries on a comma-separated list of translation key ids\n* `key.name:key_name,...` for queries on a comma-separated list of translation key names\n* `locale.id:locale_id,...` for queries on a comma-separated list of locale ids\n* `locale.name:locale_name,...` for queries on a comma-separated list of locale names\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp\n\nFind more examples [here](/en/api/strings/usage-examples).\n", + "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center", + "schema": { + "type": "string" + } + }, + "translations_locale_q": { + "in": "query", + "name": "q", + "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of translation ids\n* `key.id:key_id,...` for queries on a comma-separated list of translation key ids\n* `key.name:key_name,...` for queries on a comma-separated list of translation key names\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp\n\nFind more examples [here](/en/api/strings/usage-examples).\n", + "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center", + "schema": { + "type": "string" + } + }, + "translations_key_q": { + "in": "query", + "name": "q", + "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of translation ids\n* `locale.id:locale_id,...` for queries on a comma-separated list of locale ids\n* `locale.name:locale_name,...` for queries on a comma-separated list of locale names\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp\n\nFind more examples [here](/en/api/strings/usage-examples).\n", + "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center", + "schema": { + "type": "string" + } + }, "job_owner": { "description": "filter by user owning job", "example": "abcd1234cdef1234abcd1234cdef1234", @@ -28335,13 +28367,7 @@ } }, { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center", - "name": "q", - "in": "query", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/translations_q" } ], "responses": { @@ -28589,13 +28615,7 @@ } }, { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n- `id:translation_id,...` for queries on a comma-separated list of ids\n- `unverified:{true|false}` for verification status\n- `tags:XYZ` for tags on the translation\n- `excluded:{true|false}` for exclusion status\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center", - "name": "q", - "in": "query", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/translations_locale_q" } ], "responses": { @@ -28711,13 +28731,7 @@ } }, { - "description": "Specify a query to find translations by content (including wildcards).\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `unverified:{true|false}` for verification status\n* `tags:XYZ` for tags on the translation\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center", - "name": "q", - "in": "query", - "schema": { - "type": "string" - } + "$ref": "#/components/parameters/translations_key_q" } ], "responses": { @@ -28882,9 +28896,7 @@ "example": "desc" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n- `id:translation_id,...` for queries on a comma-separated list of ids\n- `tags:XYZ` for tags on the translation\n- `unverified:{true|false}` for verification status\n- `excluded:{true|false}` for exclusion status\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" } } } @@ -29739,9 +29751,7 @@ "example": "fc2f11dd6a658fa9652f6f0a9ebee688" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%20unverified:true%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" } } } @@ -29754,7 +29764,7 @@ "/projects/{project_id}/translations/unverify": { "patch": { "summary": "Unverify translations by query", - "description": "Mark translations matching query as unverified.", + "description": "Mark translations matching query as unverified.\n\nTo unverify the translations of specific keys, filter by key id (and optionally locale) directly, for example `key.id:KEY_ID_1,KEY_ID_2 locale.id:LOCALE_ID`. There is no need to look up translation ids first.\n", "operationId": "translations/unverify-collection", "tags": [ "Translations" @@ -29833,9 +29843,7 @@ "example": "my-feature-branch" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%20verified:true%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" }, "sort": { "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.", @@ -29937,9 +29945,7 @@ "example": "my-feature-branch" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%reviewed:false%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" } } } @@ -30031,9 +30037,7 @@ "example": "my-feature-branch" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%reviewed:true%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" } } } @@ -30122,9 +30126,7 @@ "example": "my-feature-branch" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%20verified:true%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" }, "sort": { "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.", @@ -30223,9 +30225,7 @@ "example": "my-feature-branch" }, "q": { - "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n- `id:translation_id,...` for queries on a comma-separated list of ids\n- `tags:XYZ` for tags on the translation\n- `unverified:{true|false}` for verification status\n- `excluded:{true|false}` for exclusion status\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n", - "type": "string", - "example": "PhraseApp*%20verified:true%20tags:feature,center" + "$ref": "#/components/schemas/translation_query" }, "sort": { "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.", diff --git a/parameters.yaml b/parameters.yaml index 048cd2972..027224435 100644 --- a/parameters.yaml +++ b/parameters.yaml @@ -286,6 +286,74 @@ q: in: query schema: type: string +translations_q: + in: query + name: q + description: | + Specify a query to find translations by content (including wildcards). + + *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* + + The following qualifiers are supported in the query: + * `id:translation_id,...` for queries on a comma-separated list of translation ids + * `key.id:key_id,...` for queries on a comma-separated list of translation key ids + * `key.name:key_name,...` for queries on a comma-separated list of translation key names + * `locale.id:locale_id,...` for queries on a comma-separated list of locale ids + * `locale.name:locale_name,...` for queries on a comma-separated list of locale names + * `tags:XYZ` for tags on the translation + * `unverified:{true|false}` for verification status + * `excluded:{true|false}` for exclusion status + * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries + * `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp + + Find more examples [here](/en/api/strings/usage-examples). + example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center + schema: + type: string +translations_locale_q: + in: query + name: q + description: | + Specify a query to find translations by content (including wildcards). + + *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* + + The following qualifiers are supported in the query: + * `id:translation_id,...` for queries on a comma-separated list of translation ids + * `key.id:key_id,...` for queries on a comma-separated list of translation key ids + * `key.name:key_name,...` for queries on a comma-separated list of translation key names + * `tags:XYZ` for tags on the translation + * `unverified:{true|false}` for verification status + * `excluded:{true|false}` for exclusion status + * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries + * `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp + + Find more examples [here](/en/api/strings/usage-examples). + example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center + schema: + type: string +translations_key_q: + in: query + name: q + description: | + Specify a query to find translations by content (including wildcards). + + *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* + + The following qualifiers are supported in the query: + * `id:translation_id,...` for queries on a comma-separated list of translation ids + * `locale.id:locale_id,...` for queries on a comma-separated list of locale ids + * `locale.name:locale_name,...` for queries on a comma-separated list of locale names + * `tags:XYZ` for tags on the translation + * `unverified:{true|false}` for verification status + * `excluded:{true|false}` for exclusion status + * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries + * `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp + + Find more examples [here](/en/api/strings/usage-examples). + example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center + schema: + type: string job_owner: description: filter by user owning job example: abcd1234cdef1234abcd1234cdef1234 diff --git a/paths/translations/batch_exclude.yaml b/paths/translations/batch_exclude.yaml index 6623c35a4..63a1464a6 100644 --- a/paths/translations/batch_exclude.yaml +++ b/paths/translations/batch_exclude.yaml @@ -59,22 +59,7 @@ requestBody: type: string example: my-feature-branch q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - - * `id:translation_id,...` for queries on a comma-separated list of ids - * `tags:XYZ` for tags on the translation - * `unverified:{true|false}` for verification status - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%20verified:true%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" sort: description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.' type: string diff --git a/paths/translations/batch_include.yaml b/paths/translations/batch_include.yaml index 1d83f0249..41debfe64 100644 --- a/paths/translations/batch_include.yaml +++ b/paths/translations/batch_include.yaml @@ -59,21 +59,7 @@ requestBody: type: string example: my-feature-branch q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - - `id:translation_id,...` for queries on a comma-separated list of ids - - `tags:XYZ` for tags on the translation - - `unverified:{true|false}` for verification status - - `excluded:{true|false}` for exclusion status - - `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%20verified:true%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" sort: description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.' type: string diff --git a/paths/translations/batch_review.yaml b/paths/translations/batch_review.yaml index 39d9a8a19..cc0cac965 100644 --- a/paths/translations/batch_review.yaml +++ b/paths/translations/batch_review.yaml @@ -61,20 +61,5 @@ requestBody: type: string example: my-feature-branch q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - - * `id:translation_id,...` for queries on a comma-separated list of ids - * `tags:XYZ` for tags on the translation - * `unverified:{true|false}` for verification status - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%reviewed:false%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" x-cli-version: '2.5' diff --git a/paths/translations/batch_unreview.yaml b/paths/translations/batch_unreview.yaml index 62558d80a..24297c3db 100644 --- a/paths/translations/batch_unreview.yaml +++ b/paths/translations/batch_unreview.yaml @@ -60,19 +60,5 @@ requestBody: type: string example: my-feature-branch q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - * `id:translation_id,...` for queries on a comma-separated list of ids - * `tags:XYZ` for tags on the translation - * `unverified:{true|false}` for verification status - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%reviewed:true%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" x-cli-version: '2.41' diff --git a/paths/translations/batch_unverify.yaml b/paths/translations/batch_unverify.yaml index c33a527b2..5eca131f5 100644 --- a/paths/translations/batch_unverify.yaml +++ b/paths/translations/batch_unverify.yaml @@ -1,6 +1,9 @@ --- summary: Unverify translations by query -description: Mark translations matching query as unverified. +description: | + Mark translations matching query as unverified. + + To unverify the translations of specific keys, filter by key id (and optionally locale) directly, for example `key.id:KEY_ID_1,KEY_ID_2 locale.id:LOCALE_ID`. There is no need to look up translation ids first. operationId: translations/unverify-collection tags: - Translations @@ -61,21 +64,7 @@ requestBody: type: string example: my-feature-branch q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - * `id:translation_id,...` for queries on a comma-separated list of ids - * `tags:XYZ` for tags on the translation - * `unverified:{true|false}` for verification status - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%20verified:true%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" sort: description: 'Sort criteria. Can be one of: key_name, created_at, updated_at.' type: string diff --git a/paths/translations/batch_verify.yaml b/paths/translations/batch_verify.yaml index 8fc68d363..bc624c8ef 100644 --- a/paths/translations/batch_verify.yaml +++ b/paths/translations/batch_verify.yaml @@ -65,19 +65,5 @@ requestBody: type: string example: fc2f11dd6a658fa9652f6f0a9ebee688 q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - * `id:translation_id,...` for queries on a comma-separated list of ids - * `tags:XYZ` for tags on the translation - * `unverified:{true|false}` for verification status - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%20unverified:true%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" x-cli-version: '2.5' diff --git a/paths/translations/index.yaml b/paths/translations/index.yaml index e3eccfc6c..34d84f60c 100644 --- a/paths/translations/index.yaml +++ b/paths/translations/index.yaml @@ -44,26 +44,7 @@ parameters: in: query schema: type: string -- description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - - * `id:translation_id,...` for queries on a comma-separated list of ids - * `tags:XYZ` for tags on the translation - * `unverified:{true|false}` for verification status - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - * `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp - - Find more examples [here](/en/api/strings/usage-examples). - example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center - name: q - in: query - schema: - type: string +- "$ref": "../../parameters.yaml#/translations_q" responses: '200': description: OK diff --git a/paths/translations/index_keys.yaml b/paths/translations/index_keys.yaml index 1828c2467..e8a35f19e 100644 --- a/paths/translations/index_keys.yaml +++ b/paths/translations/index_keys.yaml @@ -28,23 +28,7 @@ parameters: in: query schema: type: string -- description: | - Specify a query to find translations by content (including wildcards). - - The following qualifiers are supported in the query: - - * `id:translation_id,...` for queries on a comma-separated list of ids - * `unverified:{true|false}` for verification status - * `tags:XYZ` for tags on the translation - * `excluded:{true|false}` for exclusion status - * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center - name: q - in: query - schema: - type: string +- "$ref": "../../parameters.yaml#/translations_key_q" responses: '200': description: OK diff --git a/paths/translations/index_locale.yaml b/paths/translations/index_locale.yaml index dbc7d821e..6ba3c1778 100644 --- a/paths/translations/index_locale.yaml +++ b/paths/translations/index_locale.yaml @@ -29,24 +29,7 @@ parameters: in: query schema: type: string -- description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - - `id:translation_id,...` for queries on a comma-separated list of ids - - `unverified:{true|false}` for verification status - - `tags:XYZ` for tags on the translation - - `excluded:{true|false}` for exclusion status - - `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center - name: q - in: query - schema: - type: string +- "$ref": "../../parameters.yaml#/translations_locale_q" responses: '200': description: OK diff --git a/paths/translations/search.yaml b/paths/translations/search.yaml index 3a589237d..8ff46801d 100644 --- a/paths/translations/search.yaml +++ b/paths/translations/search.yaml @@ -73,20 +73,5 @@ requestBody: type: string example: desc q: - description: | - Specify a query to find translations by content (including wildcards). - - *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* - - The following qualifiers are supported in the query: - - - `id:translation_id,...` for queries on a comma-separated list of ids - - `tags:XYZ` for tags on the translation - - `unverified:{true|false}` for verification status - - `excluded:{true|false}` for exclusion status - - `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries - - Find more examples [here](/en/api/strings/usage-examples). - type: string - example: PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center + "$ref": "../../schemas/translation_query.yaml#/translation_query" x-cli-version: '2.5' diff --git a/schemas.yaml b/schemas.yaml index 10dd2a2bb..7765a2245 100644 --- a/schemas.yaml +++ b/schemas.yaml @@ -102,6 +102,8 @@ schemas: "$ref": schemas/translation_order.yaml#/translation_order pre_translation: "$ref": schemas/pre_translation.yaml#/pre_translation + translation_query: + "$ref": schemas/translation_query.yaml#/translation_query translation_version: "$ref": schemas/translation_version.yaml#/translation_version translation_version_with_user: diff --git a/schemas/translation_query.yaml b/schemas/translation_query.yaml new file mode 100644 index 000000000..107056503 --- /dev/null +++ b/schemas/translation_query.yaml @@ -0,0 +1,22 @@ +--- +translation_query: + type: string + description: | + Specify a query to find translations by content (including wildcards). + + *Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).* + + The following qualifiers are supported in the query: + * `id:translation_id,...` for queries on a comma-separated list of translation ids + * `key.id:key_id,...` for queries on a comma-separated list of translation key ids + * `key.name:key_name,...` for queries on a comma-separated list of translation key names + * `locale.id:locale_id,...` for queries on a comma-separated list of locale ids + * `locale.name:locale_name,...` for queries on a comma-separated list of locale names + * `tags:XYZ` for tags on the translation + * `unverified:{true|false}` for verification status + * `excluded:{true|false}` for exclusion status + * `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries + * `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp + + Find more examples [here](/en/api/strings/usage-examples). + example: key.name:home.title,home.subtitle locale.name:de-DE tags:feature From 45a79c2356e968a2126dd6f3d7b87f37588eb311 Mon Sep 17 00:00:00 2001 From: Phrase Date: Wed, 28 Oct 2026 09:46:20 +0100 Subject: [PATCH 09/17] chore(main): release typescript 3.31.0 (#1343) --- clients/typescript/CHANGELOG.md | 7 +++++++ openapi-generator/typescript_lang.yaml | 2 +- release-please/manifest-typescript.json | 2 +- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/clients/typescript/CHANGELOG.md b/clients/typescript/CHANGELOG.md index 43ffe4fb6..6517ff675 100644 --- a/clients/typescript/CHANGELOG.md +++ b/clients/typescript/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [3.31.0](https://github.com/phrase/strings-openapi/compare/typescript-v3.30.0...typescript-v3.31.0) (2026-10-23) + + +### Features + +* **API:** add uploads array to repo sync import event show response #STRINGS-3739 ([#1342](https://github.com/phrase/strings-openapi/issues/1342)) ([b5a07de](https://github.com/phrase/strings-openapi/commit/b5a07decfa83958869e9ce9363d45646cc8fa523)) + ## [3.30.0](https://github.com/phrase/strings-openapi/compare/typescript-v3.29.0...typescript-v3.30.0) (2026-10-23) diff --git a/openapi-generator/typescript_lang.yaml b/openapi-generator/typescript_lang.yaml index 2a1d6c6a0..aed9586d5 100644 --- a/openapi-generator/typescript_lang.yaml +++ b/openapi-generator/typescript_lang.yaml @@ -2,7 +2,7 @@ generatorName: typescript-fetch outputDir: clients/typescript npmName: phrase-js -npmVersion: 3.30.0 +npmVersion: 3.31.0 typescriptThreePlus: true templateDir: openapi-generator/templates/typescript-fetch repositoryUrl: https://github.com/phrase/phrase-js diff --git a/release-please/manifest-typescript.json b/release-please/manifest-typescript.json index 1f11f5b3f..1287b3ed2 100644 --- a/release-please/manifest-typescript.json +++ b/release-please/manifest-typescript.json @@ -1,3 +1,3 @@ { - ".": "3.30.0" + ".": "3.31.0" } \ No newline at end of file From bca96e432718e1d71b12a0aee102148aed60a7ee Mon Sep 17 00:00:00 2001 From: jablan Date: Wed, 28 Oct 2026 10:31:34 +0100 Subject: [PATCH 10/17] build(API): fix CI on ubuntu-26.04 runners (#1351) Co-authored-by: Claude Sonnet 5.5 --- .github/workflows/lawa.yml | 3 ++- .github/workflows/test-cli.yml | 5 +++-- .github/workflows/test-go.yml | 3 ++- .github/workflows/test-java.yml | 3 ++- .github/workflows/test-php.yml | 3 ++- .github/workflows/test-python.yml | 3 ++- .github/workflows/test-ruby.yml | 4 ++-- openapi-generator/templates/ruby-client/Gemfile.mustache | 2 +- 8 files changed, 16 insertions(+), 10 deletions(-) diff --git a/.github/workflows/lawa.yml b/.github/workflows/lawa.yml index 366e32b69..993b4300d 100644 --- a/.github/workflows/lawa.yml +++ b/.github/workflows/lawa.yml @@ -6,7 +6,8 @@ jobs: uses: phrase/actions/.github/workflows/lawa-npm-ci.yml@main with: node-version: "24.14.1" - ruby-version: 3.1.3 + ruby-version: "3.3" + ruby-bundler-version: 2.5.23 decisions-file: config/license-decisions.yml secrets: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index e4c0a5b82..760edbd25 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -43,7 +43,7 @@ jobs: go build . go test -v ./... - name: Install Ruby and rspec - uses: ruby/setup-ruby@354a1ad156761f5ee2b7b13fa8e09943a5e8d252 + uses: ruby/setup-ruby@7f797815d8adceb1c412e7abefdd1ab4abc47a5f # v1.335.0 with: ruby-version: '3.2' bundler-cache: true @@ -53,8 +53,9 @@ jobs: cd ./clients/cli bundle exec rspec --format documentation - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 with: + ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/cli diff --git a/.github/workflows/test-go.yml b/.github/workflows/test-go.yml index 70aa9e770..006fc0981 100644 --- a/.github/workflows/test-go.yml +++ b/.github/workflows/test-go.yml @@ -17,8 +17,9 @@ jobs: cd ./clients/go go test ./... -v - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 with: + ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/go diff --git a/.github/workflows/test-java.yml b/.github/workflows/test-java.yml index 1b7301a9e..936cd1cba 100644 --- a/.github/workflows/test-java.yml +++ b/.github/workflows/test-java.yml @@ -20,8 +20,9 @@ jobs: build-root-directory: ./clients/java arguments: test --info - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 with: + ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/java diff --git a/.github/workflows/test-php.yml b/.github/workflows/test-php.yml index 1f86406f7..2dc30f575 100644 --- a/.github/workflows/test-php.yml +++ b/.github/workflows/test-php.yml @@ -19,8 +19,9 @@ jobs: version: '12.1' configuration: ./clients/php/phpunit.xml.dist - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 with: + ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/php diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index eb9bdce62..0f7d05924 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -20,8 +20,9 @@ jobs: pip install -r requirements.txt -r test-requirements.txt pytest - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 with: + ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/python diff --git a/.github/workflows/test-ruby.yml b/.github/workflows/test-ruby.yml index 85359ef5e..45e09fe56 100644 --- a/.github/workflows/test-ruby.yml +++ b/.github/workflows/test-ruby.yml @@ -10,9 +10,9 @@ jobs: npm install npm run generate.ruby - name: Set up Ruby - uses: ruby/setup-ruby@v1 + uses: ruby/setup-ruby@7f797815d8adceb1c412e7abefdd1ab4abc47a5f # v1.335.0 with: - ruby-version: 3.2.1 + ruby-version: '3.2' # runs 'bundle install' and caches installed gems automatically bundler-cache: true working-directory: ./clients/ruby diff --git a/openapi-generator/templates/ruby-client/Gemfile.mustache b/openapi-generator/templates/ruby-client/Gemfile.mustache index 794aff39f..0ec701aa0 100644 --- a/openapi-generator/templates/ruby-client/Gemfile.mustache +++ b/openapi-generator/templates/ruby-client/Gemfile.mustache @@ -5,6 +5,6 @@ gemspec group :development, :test do gem 'rake', '~> 13.0.1' gem 'pry-byebug' - gem 'rubocop', '~> 0.66.0' + gem 'rubocop', '~> 1.0' gem 'webmock' end From 96107f483e275843adc09ef8de113601aa9d9de5 Mon Sep 17 00:00:00 2001 From: Phrase Date: Wed, 28 Oct 2026 10:54:40 +0100 Subject: [PATCH 11/17] docs(webhook_schemas): Update webhook schemas (#1350) Co-authored-by: github-actions[bot] --- webhook_schemas/downloads_complete.json | 167 ++++++++++++++++++ .../downloads_complete_example.json | 38 ++++ 2 files changed, 205 insertions(+) create mode 100644 webhook_schemas/downloads_complete.json create mode 100644 webhook_schemas/downloads_complete_example.json diff --git a/webhook_schemas/downloads_complete.json b/webhook_schemas/downloads_complete.json new file mode 100644 index 000000000..7fbaf0a40 --- /dev/null +++ b/webhook_schemas/downloads_complete.json @@ -0,0 +1,167 @@ +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "event": { + "type": "string" + }, + "message": { + "type": "string" + }, + "sent_at": { + "type": "string", + "format": "date-time" + }, + "user": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "username": { + "type": "string" + }, + "name": { + "type": [ + "string", + "null" + ] + }, + "gravatar_uid": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "username", + "name", + "gravatar_uid" + ] + }, + "project": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "main_format": { + "type": [ + "string", + "null" + ] + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "updated_at": { + "type": "string", + "format": "date-time" + } + }, + "required": [ + "id", + "name", + "main_format", + "created_at", + "updated_at" + ] + }, + "branch": { + "type": [ + "object", + "null" + ], + "properties": { + "name": { + "type": "string" + } + }, + "required": [ + "name" + ] + }, + "download": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "status": { + "type": "string" + }, + "result": { + "type": [ + "object", + "null" + ], + "properties": { + "url": { + "type": [ + "string", + "null" + ] + } + } + }, + "params": { + "type": [ + "object", + "null" + ] + }, + "error": { + "type": [ + "string", + "null" + ] + }, + "created_at": { + "type": "string", + "format": "date-time" + }, + "completed_at": { + "type": [ + "string", + "null" + ], + "format": "date-time" + }, + "version_hash": { + "type": [ + "string", + "null" + ] + }, + "content_version_hash": { + "type": [ + "string", + "null" + ] + } + }, + "required": [ + "id", + "status", + "result", + "params", + "error", + "created_at", + "completed_at" + ] + } + }, + "required": [ + "event", + "message", + "user", + "project", + "download" + ] +} \ No newline at end of file diff --git a/webhook_schemas/downloads_complete_example.json b/webhook_schemas/downloads_complete_example.json new file mode 100644 index 000000000..bf266be4d --- /dev/null +++ b/webhook_schemas/downloads_complete_example.json @@ -0,0 +1,38 @@ +{ + "event": "downloads:complete", + "message": "Download en.yml is ready in project Translation Project within branch new-feature-1: https://downloads.example.com/2025/02/07/a/b/ab12cd34ef56ab12cd34ef56ab12cd34?Expires=1739032800&Signature=example&Key-Pair-Id=EXAMPLE", + "sent_at": "2025-02-07 16:44:04 UTC", + "user": { + "id": "24b9a53ad72e198ca332fba91bb95f57", + "username": "john.smith", + "name": "John Smith", + "gravatar_uid": "1bc5edb4799fd8eec67c66122f47eb73" + }, + "project": { + "id": "b2abd3bd2c23ff0ac546e0a2d9aa0be1", + "name": "Translation Project", + "slug": "translation-project", + "main_format": "yml", + "project_image_url": null, + "created_at": "2025-02-07 16:18:13 UTC", + "updated_at": "2025-02-07 16:18:13 UTC", + "point_of_contact": null + }, + "branch": { + "name": "new-feature-1" + }, + "download": { + "id": "6a2c1a0f0c4d4f3f9b8c7e5d4a3b2c1d", + "status": "completed", + "result": { + "url": "https://downloads.example.com/2025/02/07/a/b/ab12cd34ef56ab12cd34ef56ab12cd34?Expires=1739032800&Signature=example&Key-Pair-Id=EXAMPLE" + }, + "params": { + "file_format": "yml", + "tags": [] + }, + "error": null, + "created_at": "2025-02-07 16:18:13 UTC", + "completed_at": "2025-02-07 16:18:20 UTC" + } +} \ No newline at end of file From 683a35f60ae1d8d870a9bec12be6481a4318b967 Mon Sep 17 00:00:00 2001 From: Phrase Date: Wed, 28 Oct 2026 11:01:11 +0100 Subject: [PATCH 12/17] docs(API): document 404 response for inaccessible job template on job creation (#1352) Co-authored-by: github-actions[bot] Co-authored-by: Mladen Jablanovic --- doc/compiled.json | 5 ++--- paths/jobs/create.yaml | 13 ++++++++++--- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/doc/compiled.json b/doc/compiled.json index 214e2cdf8..59264cbb6 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -12337,8 +12337,7 @@ "$ref": "#/components/responses/401" }, "403": { - "$ref": "#/components/responses/403", - "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create jobs in this project." + "description": "Forbidden. Returned when the OAuth token lacks the `write` scope or when the authenticated user does not have permission to create jobs in the given project.\n" }, "404": { "$ref": "#/components/responses/404" @@ -12440,7 +12439,7 @@ ] }, "job_template_id": { - "description": "id of a job template you would like to model the created job after. Any manually added parameters will take preference over template attributes. Mutually exclusive with `target_locale_ids`.", + "description": "id of a job template you would like to model the created job after. Any manually added parameters will take preference over template attributes. Mutually exclusive with `target_locale_ids`. The calling user must have read access to the template; if the template exists but is not accessible, the request returns 404.\n", "type": "string", "example": "abcd1234cdef1234abcd1234cdef1234" }, diff --git a/paths/jobs/create.yaml b/paths/jobs/create.yaml index 3344c6a7b..eeafffc09 100644 --- a/paths/jobs/create.yaml +++ b/paths/jobs/create.yaml @@ -28,8 +28,10 @@ responses: '401': "$ref": "../../responses.yaml#/401" '403': - "$ref": "../../responses.yaml#/403" - description: Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create jobs in this project. + description: > + Forbidden. Returned when the OAuth token lacks the `write` scope + or when the authenticated user does not have permission to create + jobs in the given project. '422': "$ref": "../../responses.yaml#/422" '429': @@ -114,7 +116,12 @@ requestBody: example: - abcd1234cdef1234abcd1234cdef1234 job_template_id: - description: id of a job template you would like to model the created job after. Any manually added parameters will take preference over template attributes. Mutually exclusive with `target_locale_ids`. + description: > + id of a job template you would like to model the created job after. + Any manually added parameters will take preference over template attributes. + Mutually exclusive with `target_locale_ids`. The calling user must have + read access to the template; if the template exists but is not accessible, + the request returns 404. type: string example: abcd1234cdef1234abcd1234cdef1234 autotranslate: From c4e40fa7eaa582fff709afa90b9963bba73d7126 Mon Sep 17 00:00:00 2001 From: Stefan Bruhns <5496983+sbruhns@users.noreply.github.com> Date: Thu, 29 Oct 2026 11:39:53 +0100 Subject: [PATCH 13/17] build(go): Use Go version from go.mod in release workflow (#1355) Co-authored-by: Claude Sonnet 5.5 --- clients/go/.github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/clients/go/.github/workflows/release.yml b/clients/go/.github/workflows/release.yml index 7c759fd57..1fc4ce0b1 100644 --- a/clients/go/.github/workflows/release.yml +++ b/clients/go/.github/workflows/release.yml @@ -9,13 +9,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v2 + uses: actions/checkout@v4 - name: Unshallow run: git fetch --prune --unshallow - name: Set up Go - uses: actions/setup-go@v2 + uses: actions/setup-go@v5 with: - go-version: 1.14 + go-version-file: go.mod - name: Run GoReleaser uses: goreleaser/goreleaser-action@286f3b13b1b49da4ac219696163fb8c1c93e1200 # pin@v6 with: From b122ef850babaf0c6422a20eb87b9cb08b54ec29 Mon Sep 17 00:00:00 2001 From: Phrase Date: Thu, 29 Oct 2026 11:48:22 +0100 Subject: [PATCH 14/17] chore(main): release go 4.36.0 (#1349) --- clients/cli/go.mod | 2 +- clients/go/CHANGELOG.md | 7 +++++++ openapi-generator/go_lang.yaml | 2 +- release-please/manifest-go.json | 2 +- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/clients/cli/go.mod b/clients/cli/go.mod index 80abd9aba..8e36ab7f6 100644 --- a/clients/cli/go.mod +++ b/clients/cli/go.mod @@ -9,7 +9,7 @@ require ( github.com/daviddengcn/go-colortext v1.0.0 github.com/jpillora/backoff v1.0.0 github.com/mitchellh/mapstructure v1.5.0 - github.com/phrase/phrase-go/v4 v4.35.0 // x-release-please-version + github.com/phrase/phrase-go/v4 v4.36.0 // x-release-please-version github.com/spf13/cobra v1.8.1 github.com/spf13/viper v1.7.1 golang.org/x/sync v0.23.0 diff --git a/clients/go/CHANGELOG.md b/clients/go/CHANGELOG.md index 7d74a242a..31fb84b5f 100644 --- a/clients/go/CHANGELOG.md +++ b/clients/go/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [4.36.0](https://github.com/phrase/strings-openapi/compare/go-v4.35.0...go-v4.36.0) (2026-10-29) + + +### Features + +* **API:** add uploads array to repo sync import event show response #STRINGS-3739 ([#1342](https://github.com/phrase/strings-openapi/issues/1342)) ([b5a07de](https://github.com/phrase/strings-openapi/commit/b5a07decfa83958869e9ce9363d45646cc8fa523)) + ## [4.35.0](https://github.com/phrase/strings-openapi/compare/go-v4.34.0...go-v4.35.0) (2026-10-23) diff --git a/openapi-generator/go_lang.yaml b/openapi-generator/go_lang.yaml index 8014b4552..c82abeb8f 100644 --- a/openapi-generator/go_lang.yaml +++ b/openapi-generator/go_lang.yaml @@ -2,7 +2,7 @@ generatorName: go outputDir: clients/go packageName: phrase -packageVersion: 4.35.0 +packageVersion: 4.36.0 gitUserId: phrase gitRepoId: phrase-go httpUserAgent: Phrase Strings go diff --git a/release-please/manifest-go.json b/release-please/manifest-go.json index 25e9535f2..ea3d667ed 100644 --- a/release-please/manifest-go.json +++ b/release-please/manifest-go.json @@ -1,3 +1,3 @@ { - ".": "4.35.0" + ".": "4.36.0" } \ No newline at end of file From 57218bcb7e8f56312662d340c17bd6d0136dca65 Mon Sep 17 00:00:00 2001 From: jablan Date: Fri, 30 Oct 2026 14:11:30 +0100 Subject: [PATCH 15/17] build(API): use lawa defaults from phrase/actions without overrides (#1354) Co-authored-by: Claude Sonnet 5.5 --- .github/workflows/lawa.yml | 4 +--- .github/workflows/test-cli.yml | 3 +-- .github/workflows/test-go.yml | 3 +-- .github/workflows/test-java.yml | 3 +-- .github/workflows/test-php.yml | 3 +-- .github/workflows/test-python.yml | 3 +-- 6 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/lawa.yml b/.github/workflows/lawa.yml index 993b4300d..8334d1d6f 100644 --- a/.github/workflows/lawa.yml +++ b/.github/workflows/lawa.yml @@ -3,11 +3,9 @@ on: push jobs: lawa-npm-ci: name: NPM license checks - uses: phrase/actions/.github/workflows/lawa-npm-ci.yml@main + uses: phrase/actions/.github/workflows/lawa-npm-ci.yml@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: node-version: "24.14.1" - ruby-version: "3.3" - ruby-bundler-version: 2.5.23 decisions-file: config/license-decisions.yml secrets: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} diff --git a/.github/workflows/test-cli.yml b/.github/workflows/test-cli.yml index 760edbd25..ab8dd74e7 100644 --- a/.github/workflows/test-cli.yml +++ b/.github/workflows/test-cli.yml @@ -53,9 +53,8 @@ jobs: cd ./clients/cli bundle exec rspec --format documentation - name: License check - uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: - ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/cli diff --git a/.github/workflows/test-go.yml b/.github/workflows/test-go.yml index 006fc0981..030fe6834 100644 --- a/.github/workflows/test-go.yml +++ b/.github/workflows/test-go.yml @@ -17,9 +17,8 @@ jobs: cd ./clients/go go test ./... -v - name: License check - uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: - ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/go diff --git a/.github/workflows/test-java.yml b/.github/workflows/test-java.yml index 936cd1cba..3a580b9d6 100644 --- a/.github/workflows/test-java.yml +++ b/.github/workflows/test-java.yml @@ -20,9 +20,8 @@ jobs: build-root-directory: ./clients/java arguments: test --info - name: License check - uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: - ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/java diff --git a/.github/workflows/test-php.yml b/.github/workflows/test-php.yml index 2dc30f575..94cc6c974 100644 --- a/.github/workflows/test-php.yml +++ b/.github/workflows/test-php.yml @@ -19,9 +19,8 @@ jobs: version: '12.1' configuration: ./clients/php/phpunit.xml.dist - name: License check - uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: - ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/php diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 0f7d05924..04dbd317d 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -20,9 +20,8 @@ jobs: pip install -r requirements.txt -r test-requirements.txt pytest - name: License check - uses: phrase/actions/lawa-ci@d2b850633ae97af7b9e7507bdb8ed8c8e2f3da5d # main, includes setup-ruby v1.335.0 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: - ruby-bundler-version: 2.5.23 github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml working-directory: clients/python From 46690ee15758d6d500aa5eec5e264f1686f50200 Mon Sep 17 00:00:00 2001 From: Mikko Karkee Date: Wed, 4 Nov 2026 08:57:11 +0100 Subject: [PATCH 16/17] feat(API): add exclude_linked_child_keys to jobs and job templates #STRINGS-4424 (#1356) Co-authored-by: Claude Sonnet 5.5 --- doc/compiled.json | 45 +++++++++++++++++++ paths/job_templates/create.yaml | 4 ++ paths/job_templates/update.yaml | 4 ++ paths/jobs/create.yaml | 4 ++ paths/jobs/update.yaml | 4 ++ paths/organization_job_templates/create.yaml | 4 ++ paths/organization_job_templates/update.yaml | 4 ++ schemas/job_details.yaml | 5 +++ schemas/job_template_details.yaml | 5 +++ .../organization_job_template_details.yaml | 5 +++ 10 files changed, 84 insertions(+) diff --git a/doc/compiled.json b/doc/compiled.json index 59264cbb6..73278953c 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -3782,6 +3782,11 @@ "type": "boolean", "description": "`true` if the job has been locked by the project's job-locking workflow (translations attached to the job are read-only until the job advances).\n" }, + "exclude_linked_child_keys": { + "type": "boolean", + "description": "`true` if linked child keys are excluded from this job. While enabled, linked child keys cannot be added to the job.\n", + "example": false + }, "automation_id": { "type": "string", "nullable": true, @@ -3996,6 +4001,11 @@ "items": { "$ref": "#/components/schemas/locale_preview" } + }, + "exclude_linked_child_keys": { + "type": "boolean", + "description": "`true` if jobs created from this template exclude linked child keys.\n", + "example": false } }, "example": { @@ -4998,6 +5008,11 @@ "items": { "$ref": "#/components/schemas/locale_preview" } + }, + "exclude_linked_child_keys": { + "type": "boolean", + "description": "`true` if jobs created from this template exclude linked child keys.\n", + "example": false } }, "example": { @@ -12447,6 +12462,11 @@ "description": "Automatically translate the job using machine translation.", "type": "boolean", "example": true + }, + "exclude_linked_child_keys": { + "description": "Exclude linked child keys from the job. While enabled, linked child keys cannot be added to the job. Defaults to `false`.", + "type": "boolean", + "example": false } } } @@ -12755,6 +12775,11 @@ "description": "Automatically translate the job using machine translation", "type": "boolean", "example": true + }, + "exclude_linked_child_keys": { + "description": "Exclude linked child keys from the job. When set to `true`, linked child keys already in the job are removed and none can be added while the option is enabled.", + "type": "boolean", + "example": false } } } @@ -13621,6 +13646,11 @@ "type": "boolean", "example": true }, + "exclude_linked_child_keys": { + "description": "Exclude linked child keys from jobs created from this template. Defaults to `false`.", + "type": "boolean", + "example": false + }, "source_locale_id": { "description": "The API id of the source language. This locale will be set as source locale for the job template. If not provided, the project default locale will be used.", "type": "string", @@ -13819,6 +13849,11 @@ "type": "boolean", "example": true }, + "exclude_linked_child_keys": { + "description": "Exclude linked child keys from jobs created from this template.", + "type": "boolean", + "example": false + }, "source_locale_id": { "description": "The API id of the source language. This locale will be set as source locale for the job template. If not provided, the project default locale will be used.", "type": "string", @@ -31705,6 +31740,11 @@ "type": "boolean", "example": true }, + "exclude_linked_child_keys": { + "description": "Exclude linked child keys from jobs created from this template. Defaults to `false`.", + "type": "boolean", + "example": false + }, "owner_id": { "description": "Code of the account member to set as the job template owner. When omitted\nor blank, no owner is pre-set; the user who creates a job from this template\nis assigned as its owner at job-creation time.\n", "type": "string" @@ -31884,6 +31924,11 @@ "type": "boolean", "example": true }, + "exclude_linked_child_keys": { + "description": "Exclude linked child keys from jobs created from this template.", + "type": "boolean", + "example": false + }, "owner_id": { "description": "Code of the account member to set as the job template owner.\nPass an empty string to clear a previously set owner; when blank,\nthe owner is set to null and jobs created from this template will\ndefault to assigning the job creator as owner.\n", "type": "string" diff --git a/paths/job_templates/create.yaml b/paths/job_templates/create.yaml index 61da71f6d..fb927922c 100644 --- a/paths/job_templates/create.yaml +++ b/paths/job_templates/create.yaml @@ -72,6 +72,10 @@ requestBody: description: Automatically translate the job using machine translation. type: boolean example: true + exclude_linked_child_keys: + description: Exclude linked child keys from jobs created from this template. Defaults to `false`. + type: boolean + example: false source_locale_id: description: The API id of the source language. This locale will be set as source locale for the job template. If not provided, the project default locale will be used. type: string diff --git a/paths/job_templates/update.yaml b/paths/job_templates/update.yaml index c12969a4a..63e324e46 100644 --- a/paths/job_templates/update.yaml +++ b/paths/job_templates/update.yaml @@ -75,6 +75,10 @@ requestBody: description: Automatically translate the job using machine translation. type: boolean example: true + exclude_linked_child_keys: + description: Exclude linked child keys from jobs created from this template. + type: boolean + example: false source_locale_id: description: The API id of the source language. This locale will be set as source locale for the job template. If not provided, the project default locale will be used. type: string diff --git a/paths/jobs/create.yaml b/paths/jobs/create.yaml index eeafffc09..02e121173 100644 --- a/paths/jobs/create.yaml +++ b/paths/jobs/create.yaml @@ -128,4 +128,8 @@ requestBody: description: Automatically translate the job using machine translation. type: boolean example: true + exclude_linked_child_keys: + description: Exclude linked child keys from the job. While enabled, linked child keys cannot be added to the job. Defaults to `false`. + type: boolean + example: false x-cli-version: '2.5' diff --git a/paths/jobs/update.yaml b/paths/jobs/update.yaml index c4d4843e6..cfd9f77a2 100644 --- a/paths/jobs/update.yaml +++ b/paths/jobs/update.yaml @@ -96,4 +96,8 @@ requestBody: description: Automatically translate the job using machine translation type: boolean example: true + exclude_linked_child_keys: + description: Exclude linked child keys from the job. When set to `true`, linked child keys already in the job are removed and none can be added while the option is enabled. + type: boolean + example: false x-cli-version: '2.5' diff --git a/paths/organization_job_templates/create.yaml b/paths/organization_job_templates/create.yaml index 6aa6b2ed0..63b4ad7b9 100644 --- a/paths/organization_job_templates/create.yaml +++ b/paths/organization_job_templates/create.yaml @@ -68,6 +68,10 @@ requestBody: description: Automatically translate the job using machine translation. type: boolean example: true + exclude_linked_child_keys: + description: Exclude linked child keys from jobs created from this template. Defaults to `false`. + type: boolean + example: false owner_id: description: | Code of the account member to set as the job template owner. When omitted diff --git a/paths/organization_job_templates/update.yaml b/paths/organization_job_templates/update.yaml index be3cfdbbe..4772a51c7 100644 --- a/paths/organization_job_templates/update.yaml +++ b/paths/organization_job_templates/update.yaml @@ -69,6 +69,10 @@ requestBody: description: Automatically translate the job using machine translation. type: boolean example: true + exclude_linked_child_keys: + description: Exclude linked child keys from jobs created from this template. + type: boolean + example: false owner_id: description: | Code of the account member to set as the job template owner. diff --git a/schemas/job_details.yaml b/schemas/job_details.yaml index 6abdaffe8..f8fed6bd4 100644 --- a/schemas/job_details.yaml +++ b/schemas/job_details.yaml @@ -30,6 +30,11 @@ job_details: type: boolean description: | `true` if the job has been locked by the project's job-locking workflow (translations attached to the job are read-only until the job advances). + exclude_linked_child_keys: + type: boolean + description: | + `true` if linked child keys are excluded from this job. While enabled, linked child keys cannot be added to the job. + example: false automation_id: type: string nullable: true diff --git a/schemas/job_template_details.yaml b/schemas/job_template_details.yaml index 44e6a682b..73d5e12b6 100644 --- a/schemas/job_template_details.yaml +++ b/schemas/job_template_details.yaml @@ -13,6 +13,11 @@ job_template_details: type: array items: "$ref": "./locale_preview.yaml#/locale_preview" + exclude_linked_child_keys: + type: boolean + description: | + `true` if jobs created from this template exclude linked child keys. + example: false example: owner: id: abcd1234cdef1234abcd1234cdef1234 diff --git a/schemas/organization_job_template_details.yaml b/schemas/organization_job_template_details.yaml index 60e0c32ec..b7af2b9c2 100644 --- a/schemas/organization_job_template_details.yaml +++ b/schemas/organization_job_template_details.yaml @@ -13,6 +13,11 @@ organization_job_template_details: type: array items: "$ref": "./locale_preview.yaml#/locale_preview" + exclude_linked_child_keys: + type: boolean + description: | + `true` if jobs created from this template exclude linked child keys. + example: false example: owner: id: abcd1234cdef1234abcd1234cdef1234 From 6ee9cbdfbb71fc16cd6a49c7e5d9dcb894368a0b Mon Sep 17 00:00:00 2001 From: Phrase Date: Wed, 4 Nov 2026 09:16:38 +0100 Subject: [PATCH 17/17] chore(main): release ruby 4.33.0 (#1344) --- clients/ruby/CHANGELOG.md | 8 ++++++++ openapi-generator/ruby_lang.yaml | 2 +- release-please/manifest-ruby.json | 2 +- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/clients/ruby/CHANGELOG.md b/clients/ruby/CHANGELOG.md index c4669cc7c..2d3636aaa 100644 --- a/clients/ruby/CHANGELOG.md +++ b/clients/ruby/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [4.33.0](https://github.com/phrase/strings-openapi/compare/ruby-v4.32.0...ruby-v4.33.0) (2026-11-04) + + +### Features + +* **API:** add exclude_linked_child_keys to jobs and job templates #STRINGS-4424 ([#1356](https://github.com/phrase/strings-openapi/issues/1356)) ([46690ee](https://github.com/phrase/strings-openapi/commit/46690ee15758d6d500aa5eec5e264f1686f50200)) +* **API:** add uploads array to repo sync import event show response #STRINGS-3739 ([#1342](https://github.com/phrase/strings-openapi/issues/1342)) ([b5a07de](https://github.com/phrase/strings-openapi/commit/b5a07decfa83958869e9ce9363d45646cc8fa523)) + ## [4.32.0](https://github.com/phrase/strings-openapi/compare/ruby-v4.31.0...ruby-v4.32.0) (2026-10-22) diff --git a/openapi-generator/ruby_lang.yaml b/openapi-generator/ruby_lang.yaml index a1e220d13..a4c08bb04 100644 --- a/openapi-generator/ruby_lang.yaml +++ b/openapi-generator/ruby_lang.yaml @@ -3,7 +3,7 @@ generatorName: ruby outputDir: clients/ruby moduleName: Phrase gemName: phrase -gemVersion: 4.32.0 +gemVersion: 4.33.0 gemDescription: Phrase Strings is a translation management platform for software projects. gemSummary: >- You can collaborate on language file translation with your team or order diff --git a/release-please/manifest-ruby.json b/release-please/manifest-ruby.json index 263d47d2b..5304d0ace 100644 --- a/release-please/manifest-ruby.json +++ b/release-please/manifest-ruby.json @@ -1,3 +1,3 @@ { - ".": "4.32.0" + ".": "4.33.0" } \ No newline at end of file