From 7cbaeb86a6fc542717fac92c4f77829de02d4f52 Mon Sep 17 00:00:00 2001 From: Varpuspaavi Date: Thu, 15 Oct 2026 15:33:32 +0200 Subject: [PATCH 1/2] fix(API): make clearable string fields on update endpoints nullable #STRINGS-3652 Plain optional strings generate Go fields with omitempty, so sending an empty string through the generated clients/CLI is dropped before the request is sent. Mark free-text update fields nullable so the Go client generates *NullableString and preserves an empty string on the wire. Co-Authored-By: Claude Sonnet 5.5 --- doc/compiled.json | 36 +++++++++++++++++++- paths/authorizations/update.yaml | 1 + paths/custom_metadata_properties/update.yaml | 1 + paths/glossary_terms/update.yaml | 1 + paths/job_annotations/update.yaml | 1 + paths/job_locale_annotations/update.yaml | 1 + paths/job_templates/update.yaml | 1 + paths/jobs/update.yaml | 2 ++ paths/keys/update.yaml | 4 +++ paths/locales/update.yaml | 2 ++ paths/organization_job_templates/update.yaml | 1 + paths/projects/update.yaml | 1 + paths/release_triggers/update.yaml | 2 ++ paths/releases/update.yaml | 3 ++ paths/screenshots/update.yaml | 1 + paths/styleguides/update.yaml | 9 +++++ paths/variables/update.yaml | 1 + paths/webhooks/update.yaml | 2 ++ 18 files changed, 69 insertions(+), 1 deletion(-) diff --git a/doc/compiled.json b/doc/compiled.json index 766710a45..e021f814d 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -7672,6 +7672,7 @@ "audience": { "description": "Audience description", "type": "string", + "nullable": true, "example": "customer-facing" }, "target_audience": { @@ -7717,41 +7718,49 @@ "business": { "description": "Description of the business", "type": "string", + "nullable": true, "example": "We are a travel site that helps customers find the best hotels and flights." }, "company_branding": { "description": "Company branding to remain consistent.", "type": "string", + "nullable": true, "example": "ACME Inc. should never be translated." }, "formatting": { "description": "Formatting requirements and character limitations.", "type": "string", + "nullable": true, "example": "Never use capital letters" }, "glossary_terms": { "description": "List of terms and/or phrases that need to be translated consistently.", "type": "string", + "nullable": true, "example": "Apartment, cabin, loft" }, "grammar_consistency": { "description": "Formal or informal pronouns, consistent conjugation, grammatical gender", "type": "string", + "nullable": true, "example": "" }, "literal_translation": { "description": "Can be one of: Cultural/Conversational, Literal, Neutral.", "type": "string", + "nullable": true, "example": "Neutral" }, "overall_tone": { "description": "Tone requirement descriptions", "type": "string", + "nullable": true, "example": "Tone should be fun and light" }, "samples": { "description": "Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency.", "type": "string", + "nullable": true, "example": "http://www.myexample.com/my/document/path/to/samples.pdf" } } @@ -8154,7 +8163,8 @@ "description": { "description": "description of property", "example": "A healthy snack for all ages", - "type": "string" + "type": "string", + "nullable": true }, "value_options": { "description": "value options of property (only applies to single or multi select properties)", @@ -9931,6 +9941,7 @@ "fallback_locale_id": { "description": "Fallback locale for empty translations. Can be a locale name or id.", "type": "string", + "nullable": true, "example": "abcd1234abcd1234abcd1234abcd1234" }, "unverify_new_translations": { @@ -9956,6 +9967,7 @@ "language_ai_profile": { "description": "Identifier of the Language AI profile to use for this locale.", "type": "string", + "nullable": true, "example": "abcd1234abcd1234abcd1234abcd1234" } } @@ -11491,6 +11503,7 @@ "description": { "description": "Description of the release", "type": "string", + "nullable": true, "example": "My first Release" }, "platforms": { @@ -11507,11 +11520,13 @@ "app_min_version": { "description": "Minimum version of the app that the release supports in semver format", "type": "string", + "nullable": true, "example": "2.5.0" }, "app_max_version": { "description": "Maximum version of the app that the release supports in semver format", "type": "string", + "nullable": true, "example": "3.0.0" }, "branch": { @@ -11985,11 +12000,13 @@ "app_min_version": { "description": "The created releases will be available only for apps with version greater or equal to this value", "type": "string", + "nullable": true, "example": "1.0.0" }, "app_max_version": { "description": "The created releases will be available only for apps with version less or equal to this value", "type": "string", + "nullable": true, "example": "2.0.0" } } @@ -12631,6 +12648,7 @@ "briefing": { "description": "Briefing for the translators", "type": "string", + "nullable": true, "example": "de-DE" }, "due_date": { @@ -12643,6 +12661,7 @@ "ticket_url": { "description": "URL to a ticket for this job (e.g. Jira, Trello)", "type": "string", + "nullable": true, "example": "https://example.atlassian.net/browse/FOO" }, "target_locale_ids": { @@ -13715,6 +13734,7 @@ "briefing": { "description": "Briefing for the translators", "type": "string", + "nullable": true, "example": "text" }, "autotranslate": { @@ -14560,6 +14580,7 @@ "note": { "description": "A note to help you remember what the access is used for.", "type": "string", + "nullable": true, "example": "My Deploy Script" }, "scopes": { @@ -16527,11 +16548,13 @@ "secret": { "description": "Webhook secret used to calculate signature. If empty, the default project secret will be used.", "type": "string", + "nullable": true, "example": "secr3t" }, "description": { "description": "Webhook description", "type": "string", + "nullable": true, "example": "My webhook for chat notifications" }, "events": { @@ -18474,6 +18497,7 @@ "point_of_contact": { "description": "(Optional) User ID of the point of contact for the project. Pass `null` to unset.", "type": "string", + "nullable": true, "example": "abcd1234" }, "main_format": { @@ -20060,6 +20084,7 @@ "value": { "description": "Annotation value", "type": "string", + "nullable": true, "example": "Some value..." }, "branch": { @@ -20290,6 +20315,7 @@ "value": { "description": "Annotation value", "type": "string", + "nullable": true, "example": "Some value..." }, "branch": { @@ -20709,6 +20735,7 @@ "value": { "description": "Value of the variable", "type": "string", + "nullable": true, "example": "Hello World" } } @@ -22669,6 +22696,7 @@ "description": { "description": "Description of the screenshot", "type": "string", + "nullable": true, "example": "A screenshot description" }, "filename": { @@ -23099,6 +23127,7 @@ "description": { "description": "Description of term", "type": "string", + "nullable": true, "example": "Use this when refering to our company" }, "translatable": { @@ -24874,6 +24903,7 @@ "name_plural": { "description": "Plural name for the key (used in some file formats, e.g. Gettext)", "type": "string", + "nullable": true, "example": "home.index.headlines" }, "data_type": { @@ -24917,16 +24947,19 @@ "original_file": { "description": "Original file attribute. Used in some formats, e.g. XLIFF.", "type": "string", + "nullable": true, "example": null }, "localized_format_string": { "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.", "type": "string", + "nullable": true, "example": null }, "localized_format_key": { "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.", "type": "string", + "nullable": true, "example": null }, "custom_metadata": { @@ -31795,6 +31828,7 @@ "briefing": { "description": "Briefing for the translators", "type": "string", + "nullable": true, "example": "text" }, "autotranslate": { diff --git a/paths/authorizations/update.yaml b/paths/authorizations/update.yaml index 8e859b5bc..ce9944a2e 100644 --- a/paths/authorizations/update.yaml +++ b/paths/authorizations/update.yaml @@ -58,6 +58,7 @@ requestBody: note: description: A note to help you remember what the access is used for. type: string + nullable: true example: My Deploy Script scopes: description: A list of scopes that the access can be used for. diff --git a/paths/custom_metadata_properties/update.yaml b/paths/custom_metadata_properties/update.yaml index 20de82257..e1f715c19 100644 --- a/paths/custom_metadata_properties/update.yaml +++ b/paths/custom_metadata_properties/update.yaml @@ -32,6 +32,7 @@ requestBody: description: description of property example: A healthy snack for all ages type: string + nullable: true value_options: description: value options of property (only applies to single or multi select properties) example: diff --git a/paths/glossary_terms/update.yaml b/paths/glossary_terms/update.yaml index 7e06e6b20..410040069 100644 --- a/paths/glossary_terms/update.yaml +++ b/paths/glossary_terms/update.yaml @@ -67,6 +67,7 @@ requestBody: description: description: Description of term type: string + nullable: true example: Use this when refering to our company translatable: description: Indicates whether the term should be used for all languages or can be translated diff --git a/paths/job_annotations/update.yaml b/paths/job_annotations/update.yaml index 4ad52eb40..33b095443 100644 --- a/paths/job_annotations/update.yaml +++ b/paths/job_annotations/update.yaml @@ -61,6 +61,7 @@ requestBody: value: description: Annotation value type: string + nullable: true example: Some value... branch: description: Branch name of the job diff --git a/paths/job_locale_annotations/update.yaml b/paths/job_locale_annotations/update.yaml index 4388c288e..5a3b5a07a 100644 --- a/paths/job_locale_annotations/update.yaml +++ b/paths/job_locale_annotations/update.yaml @@ -63,6 +63,7 @@ requestBody: value: description: Annotation value type: string + nullable: true example: Some value... branch: description: Branch name of the job diff --git a/paths/job_templates/update.yaml b/paths/job_templates/update.yaml index 3780268be..ec0d1779d 100644 --- a/paths/job_templates/update.yaml +++ b/paths/job_templates/update.yaml @@ -69,6 +69,7 @@ requestBody: briefing: description: Briefing for the translators type: string + nullable: true example: text autotranslate: description: Automatically translate the job using machine translation. diff --git a/paths/jobs/update.yaml b/paths/jobs/update.yaml index 90ef26e03..cd2e44a7f 100644 --- a/paths/jobs/update.yaml +++ b/paths/jobs/update.yaml @@ -67,6 +67,7 @@ requestBody: briefing: description: Briefing for the translators type: string + nullable: true example: de-DE due_date: description: Date the job should be finished @@ -77,6 +78,7 @@ requestBody: ticket_url: description: URL to a ticket for this job (e.g. Jira, Trello) type: string + nullable: true example: https://example.atlassian.net/browse/FOO target_locale_ids: description: List of target locales for the job. diff --git a/paths/keys/update.yaml b/paths/keys/update.yaml index ae8ce1a98..f7c378c04 100644 --- a/paths/keys/update.yaml +++ b/paths/keys/update.yaml @@ -88,6 +88,7 @@ requestBody: name_plural: description: Plural name for the key (used in some file formats, e.g. Gettext) type: string + nullable: true example: home.index.headlines data_type: description: 'Type of the key. Can be one of the following: string, number, boolean, array, markdown.' @@ -123,14 +124,17 @@ requestBody: original_file: description: Original file attribute. Used in some formats, e.g. XLIFF. type: string + nullable: true example: localized_format_string: description: NSStringLocalizedFormatKey attribute. Used in .stringsdict format. type: string + nullable: true example: localized_format_key: description: NSStringLocalizedFormatKey attribute. Used in .stringsdict format. type: string + nullable: true example: custom_metadata: description: Updates/Creates custom metadata property name and value pairs to be associated with key. If you want to delete a custom metadata property, you can set its value to null. If you want to update a custom metadata property, you can set its value to the new value. diff --git a/paths/locales/update.yaml b/paths/locales/update.yaml index ef9259db4..add051d32 100644 --- a/paths/locales/update.yaml +++ b/paths/locales/update.yaml @@ -89,6 +89,7 @@ requestBody: fallback_locale_id: description: Fallback locale for empty translations. Can be a locale name or id. type: string + nullable: true example: abcd1234abcd1234abcd1234abcd1234 unverify_new_translations: description: Indicates that new translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. @@ -109,5 +110,6 @@ requestBody: language_ai_profile: description: Identifier of the Language AI profile to use for this locale. type: string + nullable: true example: abcd1234abcd1234abcd1234abcd1234 x-cli-version: '2.5' diff --git a/paths/organization_job_templates/update.yaml b/paths/organization_job_templates/update.yaml index 33b1e1ac7..78b2908a5 100644 --- a/paths/organization_job_templates/update.yaml +++ b/paths/organization_job_templates/update.yaml @@ -63,6 +63,7 @@ requestBody: briefing: description: Briefing for the translators type: string + nullable: true example: text autotranslate: description: Automatically translate the job using machine translation. diff --git a/paths/projects/update.yaml b/paths/projects/update.yaml index c69aa570a..6bf01ba48 100644 --- a/paths/projects/update.yaml +++ b/paths/projects/update.yaml @@ -72,6 +72,7 @@ requestBody: point_of_contact: description: (Optional) User ID of the point of contact for the project. Pass `null` to unset. type: string + nullable: true example: abcd1234 main_format: description: (Optional) Main file format specified by its API Extension name. Used for locale downloads if no format is specified. For API Extension names of available file formats see [Format Guide](https://support.phrase.com/hc/en-us/sections/6111343326364) or our [Formats API Endpoint](#formats). diff --git a/paths/release_triggers/update.yaml b/paths/release_triggers/update.yaml index 5a31f6432..6b27ff47a 100644 --- a/paths/release_triggers/update.yaml +++ b/paths/release_triggers/update.yaml @@ -48,10 +48,12 @@ requestBody: app_min_version: description: The created releases will be available only for apps with version greater or equal to this value type: string + nullable: true example: "1.0.0" app_max_version: description: The created releases will be available only for apps with version less or equal to this value type: string + nullable: true example: "2.0.0" responses: "200": diff --git a/paths/releases/update.yaml b/paths/releases/update.yaml index 33ad17c57..861262455 100644 --- a/paths/releases/update.yaml +++ b/paths/releases/update.yaml @@ -63,6 +63,7 @@ requestBody: description: description: Description of the release type: string + nullable: true example: My first Release platforms: description: List of platforms the release should support. @@ -75,10 +76,12 @@ requestBody: app_min_version: description: Minimum version of the app that the release supports in semver format type: string + nullable: true example: 2.5.0 app_max_version: description: Maximum version of the app that the release supports in semver format type: string + nullable: true example: 3.0.0 branch: description: Branch used for release diff --git a/paths/screenshots/update.yaml b/paths/screenshots/update.yaml index df4f3e29d..d157a698d 100644 --- a/paths/screenshots/update.yaml +++ b/paths/screenshots/update.yaml @@ -71,6 +71,7 @@ requestBody: description: description: Description of the screenshot type: string + nullable: true example: A screenshot description filename: description: Screenshot file diff --git a/paths/styleguides/update.yaml b/paths/styleguides/update.yaml index 7ef3c19a8..ca53c5848 100644 --- a/paths/styleguides/update.yaml +++ b/paths/styleguides/update.yaml @@ -65,6 +65,7 @@ requestBody: audience: description: Audience description type: string + nullable: true example: customer-facing target_audience: description: Target audience for the translations. @@ -103,33 +104,41 @@ requestBody: business: description: Description of the business type: string + nullable: true example: We are a travel site that helps customers find the best hotels and flights. company_branding: description: Company branding to remain consistent. type: string + nullable: true example: ACME Inc. should never be translated. formatting: description: Formatting requirements and character limitations. type: string + nullable: true example: Never use capital letters glossary_terms: description: List of terms and/or phrases that need to be translated consistently. type: string + nullable: true example: Apartment, cabin, loft grammar_consistency: description: Formal or informal pronouns, consistent conjugation, grammatical gender type: string + nullable: true example: '' literal_translation: description: 'Can be one of: Cultural/Conversational, Literal, Neutral.' type: string + nullable: true example: Neutral overall_tone: description: Tone requirement descriptions type: string + nullable: true example: Tone should be fun and light samples: description: Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency. type: string + nullable: true example: http://www.myexample.com/my/document/path/to/samples.pdf x-cli-version: '2.5' diff --git a/paths/variables/update.yaml b/paths/variables/update.yaml index d7ebdd789..c9352edcf 100644 --- a/paths/variables/update.yaml +++ b/paths/variables/update.yaml @@ -65,5 +65,6 @@ requestBody: value: description: Value of the variable type: string + nullable: true example: Hello World x-cli-version: '2.5' diff --git a/paths/webhooks/update.yaml b/paths/webhooks/update.yaml index f415434c0..57af599a7 100644 --- a/paths/webhooks/update.yaml +++ b/paths/webhooks/update.yaml @@ -65,10 +65,12 @@ requestBody: secret: description: Webhook secret used to calculate signature. If empty, the default project secret will be used. type: string + nullable: true example: secr3t description: description: Webhook description type: string + nullable: true example: My webhook for chat notifications events: description: List of event names to trigger the webhook (separated by comma) From 480e17ccb0018673bad27b4c7a08358a186c0597 Mon Sep 17 00:00:00 2001 From: Varpuspaavi Date: Mon, 19 Oct 2026 12:51:02 +0200 Subject: [PATCH 2/2] fix(API): drop nullable from fields that cannot be cleared via update #STRINGS-3652 webhook secret (ignored when blank), authorization note and job/job locale annotation value (presence validated), variable value (unconfirmed body wrapping) and release_triggers app versions (omitting already clears). Document that an empty string or null clears the remaining fields. Co-Authored-By: Claude Sonnet 5.5 --- doc/compiled.json | 61 +++++++++----------- paths/authorizations/update.yaml | 1 - paths/custom_metadata_properties/update.yaml | 2 +- paths/glossary_terms/update.yaml | 2 +- paths/job_annotations/update.yaml | 1 - paths/job_locale_annotations/update.yaml | 1 - paths/job_templates/update.yaml | 2 +- paths/jobs/update.yaml | 4 +- paths/keys/update.yaml | 8 +-- paths/locales/update.yaml | 4 +- paths/organization_job_templates/update.yaml | 2 +- paths/projects/update.yaml | 2 +- paths/release_triggers/update.yaml | 2 - paths/releases/update.yaml | 6 +- paths/screenshots/update.yaml | 2 +- paths/styleguides/update.yaml | 18 +++--- paths/variables/update.yaml | 1 - paths/webhooks/update.yaml | 3 +- 18 files changed, 54 insertions(+), 68 deletions(-) diff --git a/doc/compiled.json b/doc/compiled.json index e021f814d..5ffcacee6 100644 --- a/doc/compiled.json +++ b/doc/compiled.json @@ -7670,7 +7670,7 @@ "example": "Web application style guide" }, "audience": { - "description": "Audience description", + "description": "Audience description. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "customer-facing" @@ -7716,49 +7716,49 @@ "example": "technical" }, "business": { - "description": "Description of the business", + "description": "Description of the business. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "We are a travel site that helps customers find the best hotels and flights." }, "company_branding": { - "description": "Company branding to remain consistent.", + "description": "Company branding to remain consistent. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "ACME Inc. should never be translated." }, "formatting": { - "description": "Formatting requirements and character limitations.", + "description": "Formatting requirements and character limitations. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "Never use capital letters" }, "glossary_terms": { - "description": "List of terms and/or phrases that need to be translated consistently.", + "description": "List of terms and/or phrases that need to be translated consistently. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "Apartment, cabin, loft" }, "grammar_consistency": { - "description": "Formal or informal pronouns, consistent conjugation, grammatical gender", + "description": "Formal or informal pronouns, consistent conjugation, grammatical gender. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "" }, "literal_translation": { - "description": "Can be one of: Cultural/Conversational, Literal, Neutral.", + "description": "Can be one of: Cultural/Conversational, Literal, Neutral. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "Neutral" }, "overall_tone": { - "description": "Tone requirement descriptions", + "description": "Tone requirement descriptions. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "Tone should be fun and light" }, "samples": { - "description": "Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency.", + "description": "Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "http://www.myexample.com/my/document/path/to/samples.pdf" @@ -8161,7 +8161,7 @@ } }, "description": { - "description": "description of property", + "description": "description of property. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "example": "A healthy snack for all ages", "type": "string", "nullable": true @@ -9939,7 +9939,7 @@ "example": "abcd1234abcd1234abcd1234abcd1234" }, "fallback_locale_id": { - "description": "Fallback locale for empty translations. Can be a locale name or id.", + "description": "Fallback locale for empty translations. Can be a locale name or id. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "abcd1234abcd1234abcd1234abcd1234" @@ -9965,7 +9965,7 @@ "example": null }, "language_ai_profile": { - "description": "Identifier of the Language AI profile to use for this locale.", + "description": "Identifier of the Language AI profile to use for this locale. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "abcd1234abcd1234abcd1234abcd1234" @@ -11501,7 +11501,7 @@ "title": "release/update/parameters", "properties": { "description": { - "description": "Description of the release", + "description": "Description of the release. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "My first Release" @@ -11518,13 +11518,13 @@ ] }, "app_min_version": { - "description": "Minimum version of the app that the release supports in semver format", + "description": "Minimum version of the app that the release supports in semver format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "2.5.0" }, "app_max_version": { - "description": "Maximum version of the app that the release supports in semver format", + "description": "Maximum version of the app that the release supports in semver format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "3.0.0" @@ -12000,13 +12000,11 @@ "app_min_version": { "description": "The created releases will be available only for apps with version greater or equal to this value", "type": "string", - "nullable": true, "example": "1.0.0" }, "app_max_version": { "description": "The created releases will be available only for apps with version less or equal to this value", "type": "string", - "nullable": true, "example": "2.0.0" } } @@ -12646,7 +12644,7 @@ "example": "de" }, "briefing": { - "description": "Briefing for the translators", + "description": "Briefing for the translators. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "de-DE" @@ -12659,7 +12657,7 @@ "nullable": true }, "ticket_url": { - "description": "URL to a ticket for this job (e.g. Jira, Trello)", + "description": "URL to a ticket for this job (e.g. Jira, Trello) Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "https://example.atlassian.net/browse/FOO" @@ -13732,7 +13730,7 @@ "example": "template" }, "briefing": { - "description": "Briefing for the translators", + "description": "Briefing for the translators. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "text" @@ -14580,7 +14578,6 @@ "note": { "description": "A note to help you remember what the access is used for.", "type": "string", - "nullable": true, "example": "My Deploy Script" }, "scopes": { @@ -16548,11 +16545,10 @@ "secret": { "description": "Webhook secret used to calculate signature. If empty, the default project secret will be used.", "type": "string", - "nullable": true, "example": "secr3t" }, "description": { - "description": "Webhook description", + "description": "Webhook description. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "My webhook for chat notifications" @@ -18495,7 +18491,7 @@ "example": "My Android Project" }, "point_of_contact": { - "description": "(Optional) User ID of the point of contact for the project. Pass `null` to unset.", + "description": "(Optional) User ID of the point of contact for the project. Pass `null` or an empty string to unset. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "abcd1234" @@ -20084,7 +20080,6 @@ "value": { "description": "Annotation value", "type": "string", - "nullable": true, "example": "Some value..." }, "branch": { @@ -20315,7 +20310,6 @@ "value": { "description": "Annotation value", "type": "string", - "nullable": true, "example": "Some value..." }, "branch": { @@ -20735,7 +20729,6 @@ "value": { "description": "Value of the variable", "type": "string", - "nullable": true, "example": "Hello World" } } @@ -22694,7 +22687,7 @@ "example": "A screenshot name" }, "description": { - "description": "Description of the screenshot", + "description": "Description of the screenshot. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "A screenshot description" @@ -23125,7 +23118,7 @@ "example": "MyCompany" }, "description": { - "description": "Description of term", + "description": "Description of term. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "Use this when refering to our company" @@ -24901,7 +24894,7 @@ "example": null }, "name_plural": { - "description": "Plural name for the key (used in some file formats, e.g. Gettext)", + "description": "Plural name for the key (used in some file formats, e.g. Gettext) Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "home.index.headlines" @@ -24945,19 +24938,19 @@ "example": null }, "original_file": { - "description": "Original file attribute. Used in some formats, e.g. XLIFF.", + "description": "Original file attribute. Used in some formats, e.g. XLIFF. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": null }, "localized_format_string": { - "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.", + "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": null }, "localized_format_key": { - "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.", + "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": null @@ -31826,7 +31819,7 @@ "example": "template" }, "briefing": { - "description": "Briefing for the translators", + "description": "Briefing for the translators. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.", "type": "string", "nullable": true, "example": "text" diff --git a/paths/authorizations/update.yaml b/paths/authorizations/update.yaml index ce9944a2e..8e859b5bc 100644 --- a/paths/authorizations/update.yaml +++ b/paths/authorizations/update.yaml @@ -58,7 +58,6 @@ requestBody: note: description: A note to help you remember what the access is used for. type: string - nullable: true example: My Deploy Script scopes: description: A list of scopes that the access can be used for. diff --git a/paths/custom_metadata_properties/update.yaml b/paths/custom_metadata_properties/update.yaml index e1f715c19..0fba0c078 100644 --- a/paths/custom_metadata_properties/update.yaml +++ b/paths/custom_metadata_properties/update.yaml @@ -29,7 +29,7 @@ requestBody: items: type: string description: - description: description of property + description: description of property. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. example: A healthy snack for all ages type: string nullable: true diff --git a/paths/glossary_terms/update.yaml b/paths/glossary_terms/update.yaml index 410040069..c187f2b32 100644 --- a/paths/glossary_terms/update.yaml +++ b/paths/glossary_terms/update.yaml @@ -65,7 +65,7 @@ requestBody: type: string example: MyCompany description: - description: Description of term + description: Description of term. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: Use this when refering to our company diff --git a/paths/job_annotations/update.yaml b/paths/job_annotations/update.yaml index 33b095443..4ad52eb40 100644 --- a/paths/job_annotations/update.yaml +++ b/paths/job_annotations/update.yaml @@ -61,7 +61,6 @@ requestBody: value: description: Annotation value type: string - nullable: true example: Some value... branch: description: Branch name of the job diff --git a/paths/job_locale_annotations/update.yaml b/paths/job_locale_annotations/update.yaml index 5a3b5a07a..4388c288e 100644 --- a/paths/job_locale_annotations/update.yaml +++ b/paths/job_locale_annotations/update.yaml @@ -63,7 +63,6 @@ requestBody: value: description: Annotation value type: string - nullable: true example: Some value... branch: description: Branch name of the job diff --git a/paths/job_templates/update.yaml b/paths/job_templates/update.yaml index ec0d1779d..c12969a4a 100644 --- a/paths/job_templates/update.yaml +++ b/paths/job_templates/update.yaml @@ -67,7 +67,7 @@ requestBody: type: string example: template briefing: - description: Briefing for the translators + description: Briefing for the translators. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: text diff --git a/paths/jobs/update.yaml b/paths/jobs/update.yaml index cd2e44a7f..173f87ba5 100644 --- a/paths/jobs/update.yaml +++ b/paths/jobs/update.yaml @@ -65,7 +65,7 @@ requestBody: type: string example: de briefing: - description: Briefing for the translators + description: Briefing for the translators. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: de-DE @@ -76,7 +76,7 @@ requestBody: example: '2017-08-15' nullable: true ticket_url: - description: URL to a ticket for this job (e.g. Jira, Trello) + description: URL to a ticket for this job (e.g. Jira, Trello) Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: https://example.atlassian.net/browse/FOO diff --git a/paths/keys/update.yaml b/paths/keys/update.yaml index f7c378c04..8a9d0d23f 100644 --- a/paths/keys/update.yaml +++ b/paths/keys/update.yaml @@ -86,7 +86,7 @@ requestBody: type: boolean example: name_plural: - description: Plural name for the key (used in some file formats, e.g. Gettext) + description: Plural name for the key (used in some file formats, e.g. Gettext) Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: home.index.headlines @@ -122,17 +122,17 @@ requestBody: type: boolean example: original_file: - description: Original file attribute. Used in some formats, e.g. XLIFF. + description: Original file attribute. Used in some formats, e.g. XLIFF. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: localized_format_string: - description: NSStringLocalizedFormatKey attribute. Used in .stringsdict format. + description: NSStringLocalizedFormatKey attribute. Used in .stringsdict format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: localized_format_key: - description: NSStringLocalizedFormatKey attribute. Used in .stringsdict format. + description: NSStringLocalizedFormatKey attribute. Used in .stringsdict format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: diff --git a/paths/locales/update.yaml b/paths/locales/update.yaml index add051d32..dc15c9d35 100644 --- a/paths/locales/update.yaml +++ b/paths/locales/update.yaml @@ -87,7 +87,7 @@ requestBody: type: string example: abcd1234abcd1234abcd1234abcd1234 fallback_locale_id: - description: Fallback locale for empty translations. Can be a locale name or id. + description: Fallback locale for empty translations. Can be a locale name or id. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: abcd1234abcd1234abcd1234abcd1234 @@ -108,7 +108,7 @@ requestBody: type: boolean example: language_ai_profile: - description: Identifier of the Language AI profile to use for this locale. + description: Identifier of the Language AI profile to use for this locale. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: abcd1234abcd1234abcd1234abcd1234 diff --git a/paths/organization_job_templates/update.yaml b/paths/organization_job_templates/update.yaml index 78b2908a5..be3cfdbbe 100644 --- a/paths/organization_job_templates/update.yaml +++ b/paths/organization_job_templates/update.yaml @@ -61,7 +61,7 @@ requestBody: type: string example: template briefing: - description: Briefing for the translators + description: Briefing for the translators. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: text diff --git a/paths/projects/update.yaml b/paths/projects/update.yaml index 6bf01ba48..7c95d7892 100644 --- a/paths/projects/update.yaml +++ b/paths/projects/update.yaml @@ -70,7 +70,7 @@ requestBody: type: string example: My Android Project point_of_contact: - description: (Optional) User ID of the point of contact for the project. Pass `null` to unset. + description: (Optional) User ID of the point of contact for the project. Pass `null` or an empty string to unset. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: abcd1234 diff --git a/paths/release_triggers/update.yaml b/paths/release_triggers/update.yaml index 6b27ff47a..5a31f6432 100644 --- a/paths/release_triggers/update.yaml +++ b/paths/release_triggers/update.yaml @@ -48,12 +48,10 @@ requestBody: app_min_version: description: The created releases will be available only for apps with version greater or equal to this value type: string - nullable: true example: "1.0.0" app_max_version: description: The created releases will be available only for apps with version less or equal to this value type: string - nullable: true example: "2.0.0" responses: "200": diff --git a/paths/releases/update.yaml b/paths/releases/update.yaml index 861262455..ef73626e8 100644 --- a/paths/releases/update.yaml +++ b/paths/releases/update.yaml @@ -61,7 +61,7 @@ requestBody: title: release/update/parameters properties: description: - description: Description of the release + description: Description of the release. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: My first Release @@ -74,12 +74,12 @@ requestBody: - android - ios app_min_version: - description: Minimum version of the app that the release supports in semver format + description: Minimum version of the app that the release supports in semver format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: 2.5.0 app_max_version: - description: Maximum version of the app that the release supports in semver format + description: Maximum version of the app that the release supports in semver format. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: 3.0.0 diff --git a/paths/screenshots/update.yaml b/paths/screenshots/update.yaml index d157a698d..97062b263 100644 --- a/paths/screenshots/update.yaml +++ b/paths/screenshots/update.yaml @@ -69,7 +69,7 @@ requestBody: type: string example: A screenshot name description: - description: Description of the screenshot + description: Description of the screenshot. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: A screenshot description diff --git a/paths/styleguides/update.yaml b/paths/styleguides/update.yaml index ca53c5848..9a9a1a988 100644 --- a/paths/styleguides/update.yaml +++ b/paths/styleguides/update.yaml @@ -63,7 +63,7 @@ requestBody: type: string example: Web application style guide audience: - description: Audience description + description: Audience description. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: customer-facing @@ -102,42 +102,42 @@ requestBody: - fictional example: technical business: - description: Description of the business + description: Description of the business. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: We are a travel site that helps customers find the best hotels and flights. company_branding: - description: Company branding to remain consistent. + description: Company branding to remain consistent. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: ACME Inc. should never be translated. formatting: - description: Formatting requirements and character limitations. + description: Formatting requirements and character limitations. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: Never use capital letters glossary_terms: - description: List of terms and/or phrases that need to be translated consistently. + description: List of terms and/or phrases that need to be translated consistently. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: Apartment, cabin, loft grammar_consistency: - description: Formal or informal pronouns, consistent conjugation, grammatical gender + description: Formal or informal pronouns, consistent conjugation, grammatical gender. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: '' literal_translation: - description: 'Can be one of: Cultural/Conversational, Literal, Neutral.' + description: 'Can be one of: Cultural/Conversational, Literal, Neutral. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there.' type: string nullable: true example: Neutral overall_tone: - description: Tone requirement descriptions + description: Tone requirement descriptions. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: Tone should be fun and light samples: - description: Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency. + description: Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: http://www.myexample.com/my/document/path/to/samples.pdf diff --git a/paths/variables/update.yaml b/paths/variables/update.yaml index c9352edcf..d7ebdd789 100644 --- a/paths/variables/update.yaml +++ b/paths/variables/update.yaml @@ -65,6 +65,5 @@ requestBody: value: description: Value of the variable type: string - nullable: true example: Hello World x-cli-version: '2.5' diff --git a/paths/webhooks/update.yaml b/paths/webhooks/update.yaml index 57af599a7..a020cd21b 100644 --- a/paths/webhooks/update.yaml +++ b/paths/webhooks/update.yaml @@ -65,10 +65,9 @@ requestBody: secret: description: Webhook secret used to calculate signature. If empty, the default project secret will be used. type: string - nullable: true example: secr3t description: - description: Webhook description + description: Webhook description. Send an empty string or `null` to clear the value; omit the field to leave it unchanged. The Phrase CLI drops `null` values before sending, so use an empty string there. type: string nullable: true example: My webhook for chat notifications