diff --git a/.github/workflows/lawa.yml b/.github/workflows/lawa.yml index 366e32b69..8334d1d6f 100644 --- a/.github/workflows/lawa.yml +++ b/.github/workflows/lawa.yml @@ -3,10 +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.1.3 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..ab8dd74e7 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,7 +53,7 @@ jobs: cd ./clients/cli bundle exec rspec --format documentation - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml diff --git a/.github/workflows/test-go.yml b/.github/workflows/test-go.yml index 70aa9e770..030fe6834 100644 --- a/.github/workflows/test-go.yml +++ b/.github/workflows/test-go.yml @@ -17,7 +17,7 @@ jobs: cd ./clients/go go test ./... -v - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml diff --git a/.github/workflows/test-java.yml b/.github/workflows/test-java.yml index 1b7301a9e..3a580b9d6 100644 --- a/.github/workflows/test-java.yml +++ b/.github/workflows/test-java.yml @@ -20,7 +20,7 @@ jobs: build-root-directory: ./clients/java arguments: test --info - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml diff --git a/.github/workflows/test-php.yml b/.github/workflows/test-php.yml index 1f86406f7..94cc6c974 100644 --- a/.github/workflows/test-php.yml +++ b/.github/workflows/test-php.yml @@ -19,7 +19,7 @@ jobs: version: '12.1' configuration: ./clients/php/phpunit.xml.dist - name: License check - uses: phrase/actions/lawa-ci@v1 + uses: phrase/actions/lawa-ci@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index eb9bdce62..04dbd317d 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -20,7 +20,7 @@ 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@13b7fdde389e4f4c5dff6426b917eb242a1b7861 # phrase/actions main (#41) with: github-token: ${{ secrets.GH_LAWA_ACCESS_TOKEN }} decisions-file: .license-decisions.yml 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/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/clients/cli/go.mod b/clients/cli/go.mod index 97f621f8e..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.34.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/.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: diff --git a/clients/go/CHANGELOG.md b/clients/go/CHANGELOG.md index 1d93fdd5a..31fb84b5f 100644 --- a/clients/go/CHANGELOG.md +++ b/clients/go/CHANGELOG.md @@ -1,5 +1,25 @@ # 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) + + +### 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/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/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/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/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/clients/typescript/CHANGELOG.md b/clients/typescript/CHANGELOG.md index 5c292e2c1..6517ff675 100644 --- a/clients/typescript/CHANGELOG.md +++ b/clients/typescript/CHANGELOG.md @@ -1,5 +1,25 @@ # 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) + + +### 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/doc/compiled.json b/doc/compiled.json index 7754eed3d..73278953c 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", @@ -3777,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, @@ -3991,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": { @@ -4993,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": { @@ -5221,6 +5241,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": { @@ -5827,6 +5873,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", @@ -12279,8 +12352,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" @@ -12382,7 +12454,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" }, @@ -12390,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 } } } @@ -12698,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 } } } @@ -13564,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", @@ -13762,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", @@ -26773,6 +26865,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" }, @@ -28303,13 +28401,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": { @@ -28557,13 +28649,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": { @@ -28679,13 +28765,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": { @@ -28850,9 +28930,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" } } } @@ -29707,9 +29785,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" } } } @@ -29722,7 +29798,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" @@ -29801,9 +29877,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.", @@ -29905,9 +29979,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" } } } @@ -29999,9 +30071,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" } } } @@ -30090,9 +30160,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.", @@ -30191,9 +30259,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.", @@ -31674,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" @@ -31853,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/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/openapi-generator/go_lang.yaml b/openapi-generator/go_lang.yaml index 232af9ad3..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.34.0 +packageVersion: 4.36.0 gitUserId: phrase gitRepoId: phrase-go httpUserAgent: Phrase Strings go 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/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/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/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/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 diff --git a/openapi-generator/typescript_lang.yaml b/openapi-generator/typescript_lang.yaml index 655600d56..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.29.0 +npmVersion: 3.31.0 typescriptThreePlus: true templateDir: openapi-generator/templates/typescript-fetch repositoryUrl: https://github.com/phrase/phrase-js 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/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 3344c6a7b..02e121173 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,11 +116,20 @@ 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: 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/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/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/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" } diff --git a/release-please/manifest-go.json b/release-please/manifest-go.json index 7dc692e1f..ea3d667ed 100644 --- a/release-please/manifest-go.json +++ b/release-please/manifest-go.json @@ -1,3 +1,3 @@ { - ".": "4.34.0" + ".": "4.36.0" } \ No newline at end of file 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 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 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 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 diff --git a/release-please/manifest-typescript.json b/release-please/manifest-typescript.json index e5b34d4e3..1287b3ed2 100644 --- a/release-please/manifest-typescript.json +++ b/release-please/manifest-typescript.json @@ -1,3 +1,3 @@ { - ".": "3.29.0" + ".": "3.31.0" } \ No newline at end of file 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/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 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' 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 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