phrase 4.25.0 → 4.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -0
  3. data/README.md +26 -4
  4. data/docs/AutomationEvent.md +33 -0
  5. data/docs/AutomationEventProject.md +19 -0
  6. data/docs/AutomationEventsApi.md +168 -0
  7. data/docs/AutomationsCreateParameters.md +1 -1
  8. data/docs/AutomationsCreateParameters1.md +1 -1
  9. data/docs/CheckIssue.md +33 -0
  10. data/docs/ChecksApi.md +146 -0
  11. data/docs/DocumentsApi.md +4 -4
  12. data/docs/ICUApi.md +1 -1
  13. data/docs/IcuSkeletonError.md +17 -0
  14. data/docs/IcuSkeletonParameters.md +11 -11
  15. data/docs/JobCreateParameters.md +1 -1
  16. data/docs/JobsApi.md +2 -2
  17. data/docs/KeyCreateParameters.md +1 -1
  18. data/docs/KeyFormatAnnotationsApi.md +74 -0
  19. data/docs/KeyFormatAnnotationsList200ResponseInner.md +19 -0
  20. data/docs/KeyLinksBatchDestroyParameters.md +6 -4
  21. data/docs/KeyLinksCreateParameters.md +2 -2
  22. data/docs/KeyUpdateParameters.md +1 -1
  23. data/docs/LinkedKeysApi.md +14 -13
  24. data/docs/Locale.md +6 -0
  25. data/docs/LocaleCreateParameters.md +2 -0
  26. data/docs/LocaleDetails.md +6 -0
  27. data/docs/LocaleUpdateParameters.md +2 -0
  28. data/docs/MachineTranslationApi.md +263 -0
  29. data/docs/MachineTranslationLocaleProviderMapping.md +21 -0
  30. data/docs/MachineTranslationLocaleProviderMappingsCreateParameters.md +21 -0
  31. data/docs/MachineTranslationSettings.md +23 -0
  32. data/docs/MachineTranslationSettingsUpdateParameters.md +17 -0
  33. data/docs/PreTranslation.md +29 -0
  34. data/docs/PreTranslationCreateParameters.md +19 -0
  35. data/docs/PreTranslationsApi.md +210 -0
  36. data/docs/ProjectCreateParameters.md +8 -2
  37. data/docs/ProjectDetails.md +3 -1
  38. data/docs/ProjectUpdateParameters.md +8 -2
  39. data/docs/ScreenshotUpdateParameters.md +1 -1
  40. data/docs/ScreenshotsApi.md +2 -2
  41. data/docs/Upload.md +3 -1
  42. data/docs/UploadsApi.md +4 -4
  43. data/lib/phrase/api/automation_events_api.rb +215 -0
  44. data/lib/phrase/api/checks_api.rb +174 -0
  45. data/lib/phrase/api/documents_api.rb +6 -6
  46. data/lib/phrase/api/icu_api.rb +2 -6
  47. data/lib/phrase/api/key_format_annotations_api.rb +85 -0
  48. data/lib/phrase/api/linked_keys_api.rb +19 -23
  49. data/lib/phrase/api/machine_translation_api.rb +302 -0
  50. data/lib/phrase/api/pre_translations_api.rb +240 -0
  51. data/lib/phrase/api/screenshots_api.rb +4 -4
  52. data/lib/phrase/api/uploads_api.rb +6 -6
  53. data/lib/phrase/models/automation_event.rb +325 -0
  54. data/lib/phrase/models/automation_event_project.rb +208 -0
  55. data/lib/phrase/models/automations_create_parameters.rb +1 -1
  56. data/lib/phrase/models/automations_create_parameters1.rb +1 -1
  57. data/lib/phrase/models/check_issue.rb +319 -0
  58. data/lib/phrase/models/{key_links_index400_response.rb → icu_skeleton_error.rb} +11 -10
  59. data/lib/phrase/models/icu_skeleton_parameters.rb +6 -6
  60. data/lib/phrase/models/job_create_parameters.rb +1 -1
  61. data/lib/phrase/models/key_format_annotations_list200_response_inner.rb +207 -0
  62. data/lib/phrase/models/key_links_batch_destroy_parameters.rb +52 -6
  63. data/lib/phrase/models/key_links_create_parameters.rb +1 -1
  64. data/lib/phrase/models/locale.rb +31 -1
  65. data/lib/phrase/models/locale_create_parameters.rb +11 -1
  66. data/lib/phrase/models/locale_details.rb +31 -1
  67. data/lib/phrase/models/locale_update_parameters.rb +11 -1
  68. data/lib/phrase/models/machine_translation_locale_provider_mapping.rb +217 -0
  69. data/lib/phrase/models/machine_translation_locale_provider_mappings_create_parameters.rb +232 -0
  70. data/lib/phrase/models/machine_translation_settings.rb +230 -0
  71. data/lib/phrase/models/machine_translation_settings_update_parameters.rb +198 -0
  72. data/lib/phrase/models/pre_translation.rb +301 -0
  73. data/lib/phrase/models/pre_translation_create_parameters.rb +241 -0
  74. data/lib/phrase/models/project_create_parameters.rb +35 -1
  75. data/lib/phrase/models/project_details.rb +10 -1
  76. data/lib/phrase/models/project_update_parameters.rb +35 -1
  77. data/lib/phrase/models/upload.rb +13 -1
  78. data/lib/phrase/response.rb +2 -2
  79. data/lib/phrase/version.rb +1 -1
  80. data/lib/phrase.rb +16 -1
  81. data/phrase.gemspec +1 -1
  82. data/spec/api/automation_events_api_spec.rb +67 -0
  83. data/spec/api/checks_api_spec.rb +56 -0
  84. data/spec/api/documents_api_spec.rb +3 -3
  85. data/spec/api/icu_api_spec.rb +1 -1
  86. data/spec/api/key_format_annotations_api_spec.rb +38 -0
  87. data/spec/api/linked_keys_api_spec.rb +7 -7
  88. data/spec/api/machine_translation_api_spec.rb +79 -0
  89. data/spec/api/pre_translations_api_spec.rb +70 -0
  90. data/spec/api/screenshots_api_spec.rb +2 -2
  91. data/spec/models/automation_event_project_spec.rb +35 -0
  92. data/spec/models/automation_event_spec.rb +85 -0
  93. data/spec/models/check_issue_spec.rb +85 -0
  94. data/spec/models/{key_links_index400_response_spec.rb → icu_skeleton_error_spec.rb} +7 -7
  95. data/spec/models/key_format_annotations_list200_response_inner_spec.rb +35 -0
  96. data/spec/models/key_links_batch_destroy_parameters_spec.rb +10 -0
  97. data/spec/models/locale_create_parameters_spec.rb +6 -0
  98. data/spec/models/locale_details_spec.rb +18 -0
  99. data/spec/models/locale_spec.rb +18 -0
  100. data/spec/models/locale_update_parameters_spec.rb +6 -0
  101. data/spec/models/machine_translation_locale_provider_mapping_spec.rb +41 -0
  102. data/spec/models/machine_translation_locale_provider_mappings_create_parameters_spec.rb +41 -0
  103. data/spec/models/machine_translation_settings_spec.rb +47 -0
  104. data/spec/models/machine_translation_settings_update_parameters_spec.rb +29 -0
  105. data/spec/models/pre_translation_create_parameters_spec.rb +39 -0
  106. data/spec/models/pre_translation_spec.rb +73 -0
  107. data/spec/models/project_create_parameters_spec.rb +18 -0
  108. data/spec/models/project_details_spec.rb +6 -0
  109. data/spec/models/project_update_parameters_spec.rb +18 -0
  110. data/spec/models/upload_spec.rb +6 -0
  111. data/spec/response_spec.rb +53 -0
  112. metadata +313 -251
  113. data/docs/KeyLinksIndex400Response.md +0 -17
data/docs/ICUApi.md CHANGED
@@ -14,7 +14,7 @@ Method | HTTP request | Description
14
14
 
15
15
  Build ICU skeletons
16
16
 
17
- Returns ICU skeletons for multiple locale codes based on a source content.
17
+ Generates ICU (International Components for Unicode) message format skeletons for a given source string across one or more locales. An ICU skeleton strips the literal text from a pluralized or select message while preserving its structural rules — argument names, plural categories, select cases, and ordinal forms — adjusted to the pluralization rules of each requested locale. Use this endpoint to normalize translation templates before importing them into locale files, or to validate that a source string carries the plural forms required by a target language. Either `content` or `id` must be provided — supplying both or neither returns 400. When `id` is used and the referenced translation does not exist, the endpoint returns 404. When the source string is not valid ICU message format syntax, the endpoint returns 422 with an `error` field describing the parse failure.
18
18
 
19
19
  ### Example
20
20
 
@@ -0,0 +1,17 @@
1
+ # Phrase::IcuSkeletonError
2
+
3
+ ## Properties
4
+
5
+ Name | Type | Description | Notes
6
+ ------------ | ------------- | ------------- | -------------
7
+ **error** | **String** | Human-readable description of the ICU message format parse failure. | [optional]
8
+
9
+ ## Code Sample
10
+
11
+ ```ruby
12
+ require 'Phrase'
13
+
14
+ instance = Phrase::IcuSkeletonError.new(error: Expected "#" but "x" found.)
15
+ ```
16
+
17
+
@@ -4,24 +4,24 @@
4
4
 
5
5
  Name | Type | Description | Notes
6
6
  ------------ | ------------- | ------------- | -------------
7
- **content** | **String** | Source content to derive skeletons from. Mutually exclusive with `id`; exactly one of the two must be provided. | [optional]
8
- **id** | **String** | Translation code to source content from. Mutually exclusive with `content`; exactly one of the two must be provided. | [optional]
9
- **locale_codes** | **Array<String>** | Locale codes | [optional]
10
- **keep_content** | **Boolean** | Keep the content and add missing plural forms for each locale | [optional]
11
- **zero_form_enabled** | **Boolean** | Indicates whether the zero form should be included or excluded in the returned skeletons | [optional]
12
- **cldr_version** | **String** | Strings supports two CLDR variants, when it comes to pluralization rules. \\ You can choose which one you want to use when constructing the skeletons. Possible values \\ are `legacy` and `cldr_41`. Default value is `legacy`. | [optional]
7
+ **content** | **String** | Source ICU message string to derive skeletons from. Mutually exclusive with `id`; exactly one of the two must be provided. | [optional]
8
+ **id** | **String** | Code of an existing translation to source content from. Mutually exclusive with `content`; exactly one of the two must be provided. Returns 404 when the translation does not exist. | [optional]
9
+ **locale_codes** | **Array<String>** | Locale codes for which to generate skeletons. The pluralization rules of each locale determine which plural forms appear in the output. | [optional]
10
+ **keep_content** | **Boolean** | When true, preserves the existing translation text in each plural form and adds any missing forms for the locale rather than stripping all literal content. | [optional]
11
+ **zero_form_enabled** | **Boolean** | When true, includes the zero plural form in the generated skeleton for locales that support it. | [optional]
12
+ **cldr_version** | **String** | Pluralization rule set to use when constructing skeletons. Pass `legacy` for pre-CLDR behaviour, or a CLDR version string such as `cldr48`. Defaults to the project's configured version when omitted. | [optional]
13
13
 
14
14
  ## Code Sample
15
15
 
16
16
  ```ruby
17
17
  require 'Phrase'
18
18
 
19
- instance = Phrase::IcuSkeletonParameters.new(content: {number, plural, one {One} other {%{n}}},
19
+ instance = Phrase::IcuSkeletonParameters.new(content: {count, plural, one {One item} other {# items}},
20
20
  id: abcd1234abcd1234abcd1234abcd1234,
21
- locale_codes: ["en"],
22
- keep_content: null,
23
- zero_form_enabled: null,
24
- cldr_version: cldr_41)
21
+ locale_codes: ["en","de"],
22
+ keep_content: false,
23
+ zero_form_enabled: false,
24
+ cldr_version: cldr48)
25
25
  ```
26
26
 
27
27
 
@@ -10,7 +10,7 @@ Name | Type | Description | Notes
10
10
  **briefing** | **String** | Briefing for the translators | [optional]
11
11
  **due_date** | **Time** | Date the job should be finished | [optional]
12
12
  **ticket_url** | **String** | URL to a ticket for this job (e.g. Jira, Trello) | [optional]
13
- **tags** | **Array<String>** | tags of keys that should be included within the job | [optional]
13
+ **tags** | **Array<String>** | tags of keys that should be included within the job. *Note: a tag matches every key currently carrying that tag, not just the ones you just tagged. For example, if hundreds of pre-existing keys already share the tag `myUploadTag`, adding it here pulls in every one of them, not only the key you just tagged. Use `translation_key_ids` to scope the job to specific keys instead.* | [optional]
14
14
  **translation_key_ids** | **Array<String>** | ids of keys that should be included within the job | [optional]
15
15
  **target_locale_ids** | **Array<String>** | List of target locales for the job. Mutually exclusive with `job_template_id`. | [optional]
16
16
  **job_template_id** | **String** | 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`. | [optional]
data/docs/JobsApi.md CHANGED
@@ -768,7 +768,7 @@ opts = {
768
768
  owned_by: 'abcd1234cdef1234abcd1234cdef1234', # String | filter by user owning job
769
769
  assigned_to: 'abcd1234cdef1234abcd1234cdef1234', # String | filter by user assigned to job
770
770
  state: 'completed', # String | filter by state of job; valid states are: `draft`, `in_progress`, `completed`
771
- updated_since: '2013-02-21T00:00:00.000Z' # String | filter by jobs updated since given date
771
+ updated_since: '2013-02-21T00:00:00Z' # String | filter by jobs updated since given date
772
772
  }
773
773
 
774
774
  begin
@@ -844,7 +844,7 @@ opts = {
844
844
  state: 'completed', # String | filter by state of job; valid states are: `draft`, `in_progress`, `completed`
845
845
  states: ['inner_example'], # Array<String> | Filter by multiple job states at once. Accepted values are the same as `state`. When supplied, `state` is ignored. Rejected with `400 Bad Request` if any value is unknown.
846
846
  key_id: 'abcd1234cdef1234abcd1234cdef1234', # String | Filter to jobs that include the translation key identified by this code (matches via the job's tags).
847
- updated_since: '2013-02-21T00:00:00.000Z' # String | filter by jobs updated since given date
847
+ updated_since: '2013-02-21T00:00:00Z' # String | filter by jobs updated since given date
848
848
  }
849
849
 
850
850
  begin
@@ -40,7 +40,7 @@ instance = Phrase::KeyCreateParameters.new(branch: my-feature-branch,
40
40
  data_type: number,
41
41
  tags: awesome-feature,needs-proofreading,
42
42
  max_characters_allowed: 140,
43
- screenshot: [B@6d448772,
43
+ screenshot: [B@5bfe65df,
44
44
  remove_screenshot: null,
45
45
  unformatted: null,
46
46
  default_translation_content: Default translation content,
@@ -0,0 +1,74 @@
1
+ # Phrase::KeyFormatAnnotationsApi
2
+
3
+ All URIs are relative to *https://api.phrase.com/v2*
4
+
5
+ Method | HTTP request | Description
6
+ ------------- | ------------- | -------------
7
+ [**key_format_annotations_list**](KeyFormatAnnotationsApi.md#key_format_annotations_list) | **GET** /projects/{project_id}/keys/{id}/format_annotations | List format annotations for a key
8
+
9
+
10
+
11
+ ## key_format_annotations_list
12
+
13
+ > Array&lt;KeyFormatAnnotationsList200ResponseInner&gt; key_format_annotations_list(project_id, id, opts)
14
+
15
+ List format annotations for a key
16
+
17
+ Returns the format annotations stored on a translation key. Format annotations capture file-format data recorded when the key was imported — for example, an ARB placeholder block or an XLIFF note. Results are limited to 1,000 entries.
18
+
19
+ ### Example
20
+
21
+ ```ruby
22
+ # load the gem
23
+ require 'phrase'
24
+ # setup authorization
25
+ Phrase.configure do |config|
26
+ # Configure HTTP basic authorization: Basic
27
+ config.username = 'YOUR USERNAME'
28
+ config.password = 'YOUR PASSWORD'
29
+
30
+ # Configure API key authorization: Token
31
+ config.api_key['Authorization'] = 'YOUR API KEY'
32
+ config.api_key_prefix['Authorization'] = 'token'
33
+ end
34
+
35
+ api_instance = Phrase::KeyFormatAnnotationsApi.new
36
+ project_id = 'project_id_example' # String | Project ID
37
+ id = 'id_example' # String | ID
38
+ opts = {
39
+ x_phrase_app_otp: 'x_phrase_app_otp_example', # String | Two-Factor-Authentication token (optional)
40
+ branch: 'my-feature-branch' # String | Branch to use
41
+ }
42
+
43
+ begin
44
+ #List format annotations for a key
45
+ result = api_instance.key_format_annotations_list(project_id, id, opts)
46
+ pp result
47
+ rescue Phrase::ApiError => e
48
+ puts "Exception when calling KeyFormatAnnotationsApi->key_format_annotations_list: #{e}"
49
+ end
50
+ ```
51
+
52
+ ### Parameters
53
+
54
+
55
+ Name | Type | Description | Notes
56
+ ------------- | ------------- | ------------- | -------------
57
+ **project_id** | **String**| Project ID |
58
+ **id** | **String**| ID |
59
+ **x_phrase_app_otp** | **String**| Two-Factor-Authentication token (optional) | [optional]
60
+ **branch** | **String**| Branch to use | [optional]
61
+
62
+ ### Return type
63
+
64
+ Response<([**Array&lt;KeyFormatAnnotationsList200ResponseInner&gt;**](KeyFormatAnnotationsList200ResponseInner.md))>
65
+
66
+ ### Authorization
67
+
68
+ [Basic](../README.md#Basic), [Token](../README.md#Token)
69
+
70
+ ### HTTP request headers
71
+
72
+ - **Content-Type**: Not defined
73
+ - **Accept**: application/json
74
+
@@ -0,0 +1,19 @@
1
+ # Phrase::KeyFormatAnnotationsList200ResponseInner
2
+
3
+ ## Properties
4
+
5
+ Name | Type | Description | Notes
6
+ ------------ | ------------- | ------------- | -------------
7
+ **file_format** | **String** | The file format that produced this annotation. | [optional]
8
+ **original_representation** | **String** | The original file-format snippet captured when the key was imported. Returned as-is, may contain multi-line content. | [optional]
9
+
10
+ ## Code Sample
11
+
12
+ ```ruby
13
+ require 'Phrase'
14
+
15
+ instance = Phrase::KeyFormatAnnotationsList200ResponseInner.new(file_format: xliff_2,
16
+ original_representation: &lt;note category&#x3D;&quot;meaning&quot;&gt;header&lt;/note&gt;)
17
+ ```
18
+
19
+
@@ -4,16 +4,18 @@
4
4
 
5
5
  Name | Type | Description | Notes
6
6
  ------------ | ------------- | ------------- | -------------
7
- **child_key_ids** | **Array&lt;String&gt;** | The IDs of the child keys to unlink from the parent key. |
8
- **unlink_parent** | **Boolean** | Whether to unlink the parent key as well and unmark it as linked-key. | [optional] [default to false]
7
+ **child_key_ids** | **Array&lt;String&gt;** | Codes of the child keys to unlink. Required when unlink_parent is false or omitted. Ignored when unlink_parent is true. |
8
+ **unlink_parent** | **Boolean** | When true, dissolves the entire linked-key group by unlinking all children and removing the group. The child_key_ids field is ignored when this is set to true. | [optional] [default to false]
9
+ **strategy** | **String** | Controls what happens to child key translation content after unlinking. keep_content (default) copies the parent translation into each child; remove_content clears each child translation. | [optional] [default to &#39;keep_content&#39;]
9
10
 
10
11
  ## Code Sample
11
12
 
12
13
  ```ruby
13
14
  require 'Phrase'
14
15
 
15
- instance = Phrase::KeyLinksBatchDestroyParameters.new(child_key_ids: [&quot;child_key_id1&quot;,&quot;child_key_id2&quot;],
16
- unlink_parent: null)
16
+ instance = Phrase::KeyLinksBatchDestroyParameters.new(child_key_ids: [&quot;feature.subtitle&quot;,&quot;nav.home&quot;],
17
+ unlink_parent: null,
18
+ strategy: null)
17
19
  ```
18
20
 
19
21
 
@@ -4,14 +4,14 @@
4
4
 
5
5
  Name | Type | Description | Notes
6
6
  ------------ | ------------- | ------------- | -------------
7
- **child_key_ids** | **Array&lt;String&gt;** | The IDs of the child keys to link to the parent key. Can be left empty, to only mark the given translation-key as parent |
7
+ **child_key_ids** | **Array&lt;String&gt;** | Codes of the keys to link as children. Pass an empty array to mark the parent key without linking any children. |
8
8
 
9
9
  ## Code Sample
10
10
 
11
11
  ```ruby
12
12
  require 'Phrase'
13
13
 
14
- instance = Phrase::KeyLinksCreateParameters.new(child_key_ids: [&quot;child_key_id1&quot;,&quot;child_key_id2&quot;])
14
+ instance = Phrase::KeyLinksCreateParameters.new(child_key_ids: [&quot;ijkl9012mnop3456ijkl9012mnop3456&quot;,&quot;abcd1234efgh5678abcd1234efgh5678&quot;])
15
15
  ```
16
16
 
17
17
 
@@ -38,7 +38,7 @@ instance = Phrase::KeyUpdateParameters.new(branch: my-feature-branch,
38
38
  data_type: number,
39
39
  tags: awesome-feature,needs-proofreading,
40
40
  max_characters_allowed: 140,
41
- screenshot: [B@614a32ef,
41
+ screenshot: [B@3b95678b,
42
42
  remove_screenshot: null,
43
43
  unformatted: null,
44
44
  xml_space_preserve: null,
@@ -13,11 +13,11 @@ Method | HTTP request | Description
13
13
 
14
14
  ## key_links_batch_destroy
15
15
 
16
- > key_links_batch_destroy(project_id, id, key_links_batch_destroy_parameters, opts)
16
+ > KeyLink key_links_batch_destroy(project_id, id, opts)
17
17
 
18
18
  Batch unlink child keys from a parent key
19
19
 
20
- Unlinks multiple child keys from a given parent key in a single operation.
20
+ Removes one or more child keys from a parent key's linked-key group, or dissolves the entire group by setting unlink_parent to true. Use this when you need to detach specific child keys from a shared translation source, or to fully break apart a linked-key group so each key manages its own translations independently. When child keys are unlinked, their translations are updated with a copy of the parent's current content (strategy keep_content, the default) or cleared (strategy remove_content). This operation is only available on main projects. It returns 422 when a child key in `child_key_ids` is not currently linked to the parent, or when a translation update fails while unlinking.
21
21
 
22
22
  ### Example
23
23
 
@@ -38,14 +38,15 @@ end
38
38
  api_instance = Phrase::LinkedKeysApi.new
39
39
  project_id = 'project_id_example' # String | Project ID
40
40
  id = 'id_example' # String | Parent Translation Key ID
41
- key_links_batch_destroy_parameters = Phrase::KeyLinksBatchDestroyParameters.new({child_key_ids: ["child_key_id1", "child_key_id2"]}) # KeyLinksBatchDestroyParameters |
42
41
  opts = {
43
- x_phrase_app_otp: 'x_phrase_app_otp_example' # String | Two-Factor-Authentication token (optional)
42
+ x_phrase_app_otp: 'x_phrase_app_otp_example', # String | Two-Factor-Authentication token (optional)
43
+ key_links_batch_destroy_parameters: Phrase::KeyLinksBatchDestroyParameters.new({child_key_ids: ["feature.subtitle", "nav.home"]}) # KeyLinksBatchDestroyParameters |
44
44
  }
45
45
 
46
46
  begin
47
47
  #Batch unlink child keys from a parent key
48
- api_instance.key_links_batch_destroy(project_id, id, key_links_batch_destroy_parameters, opts)
48
+ result = api_instance.key_links_batch_destroy(project_id, id, opts)
49
+ pp result
49
50
  rescue Phrase::ApiError => e
50
51
  puts "Exception when calling LinkedKeysApi->key_links_batch_destroy: #{e}"
51
52
  end
@@ -58,12 +59,12 @@ Name | Type | Description | Notes
58
59
  ------------- | ------------- | ------------- | -------------
59
60
  **project_id** | **String**| Project ID |
60
61
  **id** | **String**| Parent Translation Key ID |
61
- **key_links_batch_destroy_parameters** | [**KeyLinksBatchDestroyParameters**](KeyLinksBatchDestroyParameters.md)| |
62
62
  **x_phrase_app_otp** | **String**| Two-Factor-Authentication token (optional) | [optional]
63
+ **key_links_batch_destroy_parameters** | [**KeyLinksBatchDestroyParameters**](KeyLinksBatchDestroyParameters.md)| | [optional]
63
64
 
64
65
  ### Return type
65
66
 
66
- Response<(nil (empty response body))>
67
+ Response<([**KeyLink**](KeyLink.md))>
67
68
 
68
69
  ### Authorization
69
70
 
@@ -81,7 +82,7 @@ Response<(nil (empty response body))>
81
82
 
82
83
  Link child keys to a parent key
83
84
 
84
- Creates links between a given parent key and one or more child keys.
85
+ Designates a translation key as a parent and links one or more child keys to it. Once linked, child keys receive a special reference marker as their translation content, signalling that their translations are derived from the parent. Use this when you want to group related keys — for example, a short label and its long-form variant — so translators see them in context together. Pass an empty child_key_ids array to mark the key as a parent without linking any children yet. Both the parent key and every child key must belong to the main project; branch keys cannot participate in key links. A child key can have at most one parent at a time; attempting to link a child that already has a parent returns a 422 error with code CHILD_IS_ALREADY_LINKED. Parent and child key plurality must match — linking a plural child to a non-plural parent (or vice versa) also returns a 422.
85
86
 
86
87
  ### Example
87
88
 
@@ -102,7 +103,7 @@ end
102
103
  api_instance = Phrase::LinkedKeysApi.new
103
104
  project_id = 'project_id_example' # String | Project ID
104
105
  id = 'id_example' # String | Parent Translation Key ID
105
- key_links_create_parameters = Phrase::KeyLinksCreateParameters.new({child_key_ids: ["child_key_id1", "child_key_id2"]}) # KeyLinksCreateParameters |
106
+ key_links_create_parameters = Phrase::KeyLinksCreateParameters.new({child_key_ids: ["ijkl9012mnop3456ijkl9012mnop3456", "abcd1234efgh5678abcd1234efgh5678"]}) # KeyLinksCreateParameters |
106
107
  opts = {
107
108
  x_phrase_app_otp: 'x_phrase_app_otp_example' # String | Two-Factor-Authentication token (optional)
108
109
  }
@@ -146,7 +147,7 @@ Response<([**KeyLink**](KeyLink.md))>
146
147
 
147
148
  Unlink a child key from a parent key
148
149
 
149
- Unlinks a single child key from a given parent key.
150
+ Removes a single child key from a parent key's link group. A link group is the relationship model that keeps child keys synchronized with a parent: while linked, a child key's translations are derived from the parent's content. When you call this endpoint, the child key leaves the group and becomes independent — its existing translations are updated with the parent's current content and then marked unverified, signalling that reviewers should confirm the content is still appropriate for the child's context. Use this endpoint when you need to detach one specific child key while keeping other children linked. To detach multiple children at once, use the batch unlink endpoint. This operation is only available on main projects. It returns 422 when the child key is not currently linked to the specified parent key, or when a translation update fails during the unlink process.
150
151
 
151
152
  ### Example
152
153
 
@@ -167,7 +168,7 @@ end
167
168
  api_instance = Phrase::LinkedKeysApi.new
168
169
  project_id = 'project_id_example' # String | Project ID
169
170
  id = 'id_example' # String | Parent Translation Key ID
170
- child_key_id = 'child_key_id_example' # String | The ID of the child key to unlink.
171
+ child_key_id = '1234abcd1234cdef1234abcd1234cdef' # String | The ID of the child translation key to unlink from the parent.
171
172
  opts = {
172
173
  x_phrase_app_otp: 'x_phrase_app_otp_example' # String | Two-Factor-Authentication token (optional)
173
174
  }
@@ -187,7 +188,7 @@ Name | Type | Description | Notes
187
188
  ------------- | ------------- | ------------- | -------------
188
189
  **project_id** | **String**| Project ID |
189
190
  **id** | **String**| Parent Translation Key ID |
190
- **child_key_id** | **String**| The ID of the child key to unlink. |
191
+ **child_key_id** | **String**| The ID of the child translation key to unlink from the parent. |
191
192
  **x_phrase_app_otp** | **String**| Two-Factor-Authentication token (optional) | [optional]
192
193
 
193
194
  ### Return type
@@ -210,7 +211,7 @@ Response<(nil (empty response body))>
210
211
 
211
212
  List child keys of a parent key
212
213
 
213
- Returns detailed information about a parent key, including its linked child keys.
214
+ Returns the key link record for a parent key, including all child keys associated with it. Key linking lets translation keys share translations — a child key inherits content from its designated parent. Use this endpoint to inspect which keys are linked under a given parent before unlinking them or auditing translation consistency across related keys. The key identified by `id` must be designated as a parent key (it must have at least one child key linked to it). Listing the links of a key that is not a parent returns 400.
214
215
 
215
216
  ### Example
216
217
 
data/docs/Locale.md CHANGED
@@ -15,6 +15,9 @@ Name | Type | Description | Notes
15
15
  **source_locale** | [**LocalePreview**](LocalePreview.md) | | [optional]
16
16
  **fallback_locale** | [**LocalePreview**](LocalePreview.md) | | [optional]
17
17
  **language_ai_profile** | **String** | | [optional]
18
+ **unverify_new_translations** | **Boolean** | Indicates that new translations for this locale are marked as unverified. Only applies to locales using the basic verification workflow. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. | [optional]
19
+ **unverify_updated_translations** | **Boolean** | Indicates that updated translations for this locale are marked as unverified. Only applies to locales using the basic verification workflow. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. | [optional]
20
+ **unverify_on_source_changes** | **Boolean** | Indicates that translations for this locale are marked as unverified when the source language has been changed. | [optional]
18
21
  **created_at** | **Time** | | [optional]
19
22
  **updated_at** | **Time** | | [optional]
20
23
 
@@ -34,6 +37,9 @@ instance = Phrase::Locale.new(id: null,
34
37
  source_locale: null,
35
38
  fallback_locale: null,
36
39
  language_ai_profile: null,
40
+ unverify_new_translations: null,
41
+ unverify_updated_translations: null,
42
+ unverify_on_source_changes: null,
37
43
  created_at: null,
38
44
  updated_at: null)
39
45
  ```
@@ -14,6 +14,7 @@ Name | Type | Description | Notes
14
14
  **fallback_locale_id** | **String** | Fallback locale for empty translations. Can be a locale name or id. | [optional]
15
15
  **unverify_new_translations** | **Boolean** | 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. | [optional]
16
16
  **unverify_updated_translations** | **Boolean** | Indicates that updated translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. | [optional]
17
+ **unverify_on_source_changes** | **Boolean** | Indicates that translations for this locale should be marked as unverified when the source language has been changed. | [optional]
17
18
  **autotranslate** | **Boolean** | If set, translations for this locale will be fetched automatically, right after creation. | [optional]
18
19
  **language_ai_profile** | **String** | Identifier of the Language AI profile to use for this locale. | [optional]
19
20
 
@@ -32,6 +33,7 @@ instance = Phrase::LocaleCreateParameters.new(branch: my-feature-branch,
32
33
  fallback_locale_id: abcd1234abcd1234abcd1234abcd1234,
33
34
  unverify_new_translations: null,
34
35
  unverify_updated_translations: null,
36
+ unverify_on_source_changes: null,
35
37
  autotranslate: null,
36
38
  language_ai_profile: abcd1234abcd1234abcd1234abcd1234)
37
39
  ```
@@ -15,6 +15,9 @@ Name | Type | Description | Notes
15
15
  **source_locale** | [**LocalePreview**](LocalePreview.md) | | [optional]
16
16
  **fallback_locale** | [**LocalePreview**](LocalePreview.md) | | [optional]
17
17
  **language_ai_profile** | **String** | | [optional]
18
+ **unverify_new_translations** | **Boolean** | Indicates that new translations for this locale are marked as unverified. Only applies to locales using the basic verification workflow. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. | [optional]
19
+ **unverify_updated_translations** | **Boolean** | Indicates that updated translations for this locale are marked as unverified. Only applies to locales using the basic verification workflow. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. | [optional]
20
+ **unverify_on_source_changes** | **Boolean** | Indicates that translations for this locale are marked as unverified when the source language has been changed. | [optional]
18
21
  **created_at** | **Time** | | [optional]
19
22
  **updated_at** | **Time** | | [optional]
20
23
  **statistics** | [**LocaleStatistics**](LocaleStatistics.md) | | [optional]
@@ -35,6 +38,9 @@ instance = Phrase::LocaleDetails.new(id: null,
35
38
  source_locale: null,
36
39
  fallback_locale: null,
37
40
  language_ai_profile: null,
41
+ unverify_new_translations: null,
42
+ unverify_updated_translations: null,
43
+ unverify_on_source_changes: null,
38
44
  created_at: null,
39
45
  updated_at: null,
40
46
  statistics: null)
@@ -14,6 +14,7 @@ Name | Type | Description | Notes
14
14
  **fallback_locale_id** | **String** | Fallback locale for empty translations. Can be a locale name or id. | [optional]
15
15
  **unverify_new_translations** | **Boolean** | 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. | [optional]
16
16
  **unverify_updated_translations** | **Boolean** | Indicates that updated translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature. | [optional]
17
+ **unverify_on_source_changes** | **Boolean** | Indicates that translations for this locale should be marked as unverified when the source language has been changed. | [optional]
17
18
  **autotranslate** | **Boolean** | If set, translations for this locale will be fetched automatically, right after creation. | [optional]
18
19
  **language_ai_profile** | **String** | Identifier of the Language AI profile to use for this locale. | [optional]
19
20
 
@@ -32,6 +33,7 @@ instance = Phrase::LocaleUpdateParameters.new(branch: my-feature-branch,
32
33
  fallback_locale_id: abcd1234abcd1234abcd1234abcd1234,
33
34
  unverify_new_translations: null,
34
35
  unverify_updated_translations: null,
36
+ unverify_on_source_changes: null,
35
37
  autotranslate: null,
36
38
  language_ai_profile: abcd1234abcd1234abcd1234abcd1234)
37
39
  ```