{"openapi":"3.0.3","info":{"title":"Projects with branches","version":"1.0.0","description":"Describes the API for projects with branches.\\n\\n**Project Type Compatibility**: Branching is **only supported for Software projects** (localization_files). Documents and Marketing projects do not support branching. All endpoints in this documentation require Software projects with branching enabled."},"servers":[{"url":"https://api.lokalise.com/api2"}],"paths":{"/projects/{project_id}/branches":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"20008339586cded200e0d8.29879849","branches":[{"branch_id":1234,"name":"feature/best-web","created_at":"2019-10-01 14:16:00 (Etc/UTC)","created_at_timestamp":1567001760,"created_by":1123,"created_by_email":"john@lokalise.com"},{"branch_id":5678,"name":"hotfix/error1","created_at":"2019-10-02 14:15:50 (Etc/UTC)","created_at_timestamp":1567001750,"created_by":1123,"created_by_email":"john@lokalise.com"}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"branch":{"type":"array","items":{"$ref":"#/components/schemas/Branches"}}}}}}}},"summary":"List all branches","operationId":"List all branches","description":"Retrieves a list of branches.\n\n**Project Type Compatibility:**\n- ✅ **Software projects** (localization_files) - *Only project type that supports branching*\n- ❌ **Documents projects** (paged_documents) - *Branching not supported*\n- ❌ **Marketing projects** (content_integration, marketing, marketing_integrations) - *Branching not supported*\n\nRequires <code>read_projects</code> OAuth access scope.","tags":["Branches"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]},"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","branch":{"branch_id":995991,"name":"hotfix/really-important","created_at":"2019-10-03 14:15:50 (Etc/UTC)","created_at_timestamp":1567001750,"created_by":1123,"created_by_email":"john@lokalise.com"}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"branch":{"$ref":"#/components/schemas/Branches"}}}}}}},"summary":"Create a branch","operationId":"Create a branch","description":"Creates a branch in the project. Before using this endpoint, please enable Branching in your project by following [this guide](https://docs.lokalise.com/en/articles/3391861-project-branching).\nRequires admin right.\n\n**Project Type Compatibility:**\n- ✅ **Software projects** (localization_files) - *Only project type that supports branching*\n- ❌ **Documents projects** (paged_documents) - *Branching not supported*\n- ❌ **Marketing projects** (content_integration, marketing, marketing_integrations) - *Branching not supported*\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Branches"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"hotfix/really-important"},"schema":{"type":"object","properties":{"name":{"type":"string","description":"Branch name."}}}}}}}},"/projects/{project_id}/branches/{branch_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"600904245c4ecf0ec4a9d4.28360690","branch":{"branch_id":5678,"name":"hotfix/error1","created_at":"2019-10-02 14:15:50 (Etc/UTC)","created_at_timestamp":1567001750,"created_by":1123,"created_by_email":"john@lokalise.com"}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"branch":{"$ref":"#/components/schemas/Branches"}}}}}}},"summary":"Retrieve a branch","operationId":"Retrieve a branch","description":"Retrieves a [Branch](#object-branches) object.\n\nRequires <code>read_projects</code> OAuth access scope.","tags":["Branches"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch_id","in":"path","description":"A unique identifier of the branch.","required":true,"schema":{"type":"number"}}]},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","branch":{"branch_id":995991,"name":"hotfix/needed-yesterday","created_at":"2019-10-03 14:15:50 (Etc/UTC)","created_at_timestamp":1567001750,"created_by":1123,"created_by_email":"john@lokalise.com"}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"branch":{"$ref":"#/components/schemas/Branches"}}}}}}},"summary":"Update a branch","operationId":"Update a branch","description":"Updates a branch in the project. Requires admin right.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Branches"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch_id","in":"path","description":"A unique identifier of the branch.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"name":"hotfix/needed-yesterday"},"schema":{"type":"object","properties":{"name":{"type":"string","description":"Branch name."}}}}}}},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","branch_deleted":true},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"branch_deleted":{"type":"boolean"}}}}}}},"summary":"Delete a branch","operationId":"Delete a branch","description":"Deletes a configured branch in the project. Requires admin right.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Branches"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch_id","in":"path","description":"A unique identifier of the branch.","required":true,"schema":{"type":"number"}}]}},"/projects/{project_id}/branches/{branch_id}/merge":{"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","branch_merged":true,"branch":{"branch_id":995991,"name":"hotfix/needed-yesterday","created_at":"2019-10-03 14:15:50 (Etc/UTC)","created_at_timestamp":1567001750,"created_by":1123,"created_by_email":"john@lokalise.com"},"target_branch":{"branch_id":995123,"name":"master","created_at":"2019-10-03 14:15:50 (Etc/UTC)","created_at_timestamp":1567001750,"created_by":1123,"created_by_email":"john@lokalise.com"}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"branch_merged":{"type":"boolean"},"branch":{"$ref":"#/components/schemas/Branches"},"target_branch":{"$ref":"#/components/schemas/Branches"}}}}}}},"summary":"Merge a branch","operationId":"Merge a branch","description":"Merges a branch in the project. Requires admin right.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Branches"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch_id","in":"path","description":"A unique identifier of the branch.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"force_conflict_resolve_using":"target"},"schema":{"type":"object","properties":{"force_conflict_resolve_using":{"type":"string","description":"Specify how to resolve conflicts. Possible values are <code>target</code> or <code>source</code>.","enum":["source","target"]},"target_branch_id":{"type":"number","description":"The branch to merge to. Defaults to master branch if not specified."}}}}}}}},"/projects/{project_id}:{branch}/comments":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","comments":[{"comment_id":44444,"key_id":12345,"comment":"Hello, world!","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600},{"comment_id":44445,"key_id":12346,"comment":"Bye, world!","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comments"}}}}}}}},"summary":"List project comments","operationId":"List project comments","description":"Retrieves a list of all comments in the project.\n\nRequires <code>read_comments</code> OAuth access scope.","tags":["Comments"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]}},"/projects/{project_id}:{branch}/keys/{key_id}/comments":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","comments":[{"comment_id":44444,"key_id":12345,"comment":"Hello, world!","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600},{"comment_id":44445,"key_id":12345,"comment":"Bye, world!","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"comments":{"type":"array","items":{"$ref":"#/components/schemas/Comments"}}}}}}}},"summary":"List key comments","operationId":"List key comments","description":"Retrieves a list of all comments for a key.\n\nRequires <code>read_comments</code> OAuth access scope.","tags":["Comments"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]},"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","comments":[{"comment_id":44444,"key_id":12345,"comment":"This is a test.","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600},{"comment_id":44445,"key_id":12345,"comment":"Adding multiple comments.","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"comment":{"$ref":"#/components/schemas/Comments"}}}}}}},"summary":"Create comments","operationId":"Create comments","description":"Adds a set of comments to the key.\n\nRequires <code>write_comments</code> OAuth access scope.","tags":["Comments"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"comments":[{"comment":"This is a test."},{"comment":"Adding multiple comments."}]},"schema":{"type":"object","properties":{"comments":{"type":"array","items":{"type":"object","required":["comment"],"properties":{"comment":{"type":"string","description":"The comment to add."}}},"description":"A set of comments to add"}}}}}}}},"/projects/{project_id}:{branch}/keys/{key_id}/comments/{comment_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","comment":{"comment_id":44444,"key_id":12345,"comment":"This is a test.","added_by":420,"added_by_email":"commenter@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"comment":{"$ref":"#/components/schemas/Comments"}}}}}}},"summary":"Retrieve a comment","operationId":"Retrieve a comment","description":"Retrieves a [Comment](#object-comments) object.\n\nRequires <code>read_comments</code> OAuth access scope.","tags":["Comments"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}},{"name":"comment_id","in":"path","description":" A unique identifier of the comment.","required":true,"schema":{"type":"number"}}]},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"comment_deleted":{"type":"boolean"}}}}}}},"summary":"Delete a comment","operationId":"Delete a comment","description":"Deletes a comment from the project. Authenticated user can only delete own comments.\n\nRequires <code>write_comments</code> OAuth access scope.","tags":["Comments"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}},{"name":"comment_id","in":"path","description":" A unique identifier of the comment.","required":true,"schema":{"type":"number"}}]}},"/projects/{project_id}:{branch}/files":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","files":[{"file_id":33,"filename":"%LANG_ISO%-index.json","key_count":441},{"file_id":24,"filename":"admin.json","key_count":32},{"file_id":-1,"filename":"__unassigned__","key_count":11}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"files":{"type":"array","items":{"$ref":"#/components/schemas/Files"}}}}}}}},"summary":"List all files","operationId":"List all files","description":"Lists project files and associated key count. If there are some keys in the project that do not have a file association, they will be returned with filename `__unassigned__`.\n\nRequires <code>read_files</code> OAuth access scope.","tags":["Files"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"filter_filename","in":"query","description":"Set filename filter for the list.","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]}},"/projects/{project_id}:{branch}/files/upload":{"post":{"responses":{"200":{"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"process":{"$ref":"#/components/schemas/QueuedProcesses"}}}}},"description":"OK"},"202":{"description":"Accepted","headers":{"Location":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"767946315e9866d013c1d0.08299127","process":{"process_id":"2e0559e60e856555fbc15bdf78ab2b0ca3406e8f","type":"file-import","status":"queued","message":"","created_by":1234,"created_by_email":"example@example.com","created_at":"2020-04-20 13:43:43 (Etc/UTC)","created_at_timestamp":1587390223}}}}},"302":{"description":"Found","headers":{"Location":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"767946315e9866d013c1d0.08299127","process":{"process_id":"2e0559e60e856555fbc15bdf78ab2b0ca3406e8f","type":"file-import","status":"queued","message":"","created_by":1234,"created_by_email":"example@example.com","created_at":"2020-04-20 13:43:43 (Etc/UTC)","created_at_timestamp":1587390223}}}}}},"summary":"Upload a file","operationId":"Upload a file","description":"Queues a localization file for import and returns a <code>202</code> or <code>302</code> response along with a <a href=\"#object-queued-processes\">Queued process</a> object. <a href=\"https://docs.lokalise.com/developer-docs/uploading-files\" target=\"`_new`\">Learn more</a>. Requires *Upload files* admin right. <a href=\"https://docs.lokalise.com/supported-file-formats\" target=_new>Supported file types</a>.\n\nPlease note that the <code>302</code> response code is not currently used, but in the future it will be returned if the same file is already in the upload queue.\n\nRequires <code>write_files</code> OAuth access scope.","tags":["Files"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"filename":"index.json","data":"D94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGL.....","lang_iso":"en","tags":["index","admin","v2.0"],"convert_placeholders":true},"schema":{"type":"object","required":["data","filename","lang_iso"],"properties":{"data":{"type":"string","description":"Base64 encoded file. Must be one of the supported file types."},"filename":{"type":"string","description":"Set the filename. You may optionally use a relative path in the filename (e.g admin/main.json), however keep in mind that path would become a unique part of the file."},"lang_iso":{"type":"string","description":"Language code of the translations in the file you are importing."},"convert_placeholders":{"type":"boolean","description":"Enable to automatically convert placeholders to the Lokalise universal placeholders."},"detect_icu_plurals":{"type":"boolean","description":"Enable to automatically detect and parse ICU formatted plurals in your translations."},"tags":{"type":"array","items":{"type":"string"},"description":"Tag keys with the specified tags. By default tags are applied to created and updated keys."},"tag_inserted_keys":{"type":"boolean","description":"Add specified tags to inserted keys."},"tag_updated_keys":{"type":"boolean","description":"Add specified tags to updated keys."},"tag_skipped_keys":{"type":"boolean","description":"Add specified tags to skipped keys."},"tag_parsed_keys":{"type":"boolean","default":false,"description":"Add tags parsed from the uploaded file (e.g. Structured JSON per-key tags) to the corresponding keys."},"replace_modified":{"type":"boolean","description":"Enable to replace translations, that have been modified (in the file being uploaded)."},"replace_metadata":{"type":"boolean","default":false,"description":"Structured JSON only. Enable to replace key metadata (tags, notes, character limit) with the values from the uploaded file. Tags added manually (via the editor, bulk actions, tasks or connectors) are preserved; only tags previously set by a file upload are replaced. Defaults to false."},"slashn_to_linebreak":{"type":"boolean","description":"Enable to replace \\n with a line break."},"keys_to_values":{"type":"boolean","description":"Enable to automatically replace values with key names."},"distinguish_by_file":{"type":"boolean","description":"Enable to allow keys with similar names to coexist, in case they are assigned to different filenames."},"apply_tm":{"type":"boolean","description":"Enable to automatically apply 100% translation memory matches. This option will take priority over <code>use_automations</code> if set to <code>true</code>."},"use_automations":{"type":"boolean","description":"Whether to run automations for this upload."},"hidden_from_contributors":{"type":"boolean","description":"Enable to automatically set newly created keys as \"Hidden from contributors\"."},"cleanup_mode":{"type":"boolean","description":"Enable to delete all keys with all language translations that are not present in the uploaded file. You may want to make a snapshot of the project before importing new file, just in case."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"Custom translation status IDs to be added to translations. By default statuses are applied to created and updated translations."},"custom_translation_status_inserted_keys":{"type":"boolean","description":"Add specified custom translation statuses to inserted keys."},"custom_translation_status_updated_keys":{"type":"boolean","description":"Add specified custom translation statuses to updated keys."},"custom_translation_status_skipped_keys":{"type":"boolean","description":"Add specified custom translation statuses to skipped keys."},"skip_detect_lang_iso":{"type":"boolean","description":"Skip automatic language detection by filename."},"format":{"type":"string","description":"File format (e.g. json, strings, xml). Must be file extension of any of the file formats we support."},"filter_task_id":{"type":"number","description":"Apply import results as a part of a task. Available only for offline_xliff file format."},"title":{"type":"string","maxLength":256,"description":"Set a human-readable title for the uploaded file, displayed in the UI instead of the filename. Maximum 256 characters. Relevant for Marketing and support (M&S) project types only."}}}}}}}},"/projects/{project_id}:{branch}/files/async-download":{"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"process_id":"74738ff5-5367-5958-9aee-98fffdcd1876"},"schema":{"type":"object","properties":{"process_id":{"type":"string"}}}}}}},"summary":"Download files (Async)","operationId":"Download files (Async)","description":"Starts a project export process. The progress of the process can be tracked using the <a href=\"https://developers.lokalise.com/reference/list-all-processes\">list all processes</a> API endpoint. Once complete, the download URL can be accessed using the <a href=\"https://developers.lokalise.com/reference/retrieve-a-process\">Retrieve process</a> API endpoint. For general details about the Download endpoint, please refer to the <a href=\"https://developers.lokalise.com/reference/download-files\">Download files</a> API endpoint.","tags":["Files"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"format":"json","original_filenames":true},"schema":{"type":"object","required":["format"],"properties":{"format":{"type":"string","description":"File format (e.g. json, strings, xml). Must be file extension of any of the file formats we support. May also be <code>ios_sdk</code> or <code>android_sdk</code> for respective OTA SDK bundles."},"original_filenames":{"type":"boolean","description":"Enable to use original filenames/formats. If set to <code>false</code> all keys will be export to a single file per language."},"bundle_structure":{"type":"string","description":"Bundle structure, used when <code>original_filenames</code> set to <code>false</code>. Allowed placeholders are <code>%LANG_ISO%</code>, <code>%LANG_NAME%</code>, <code>%FORMAT%</code> and <code>%PROJECT_NAME%</code>)."},"directory_prefix":{"type":"string","description":"Directory prefix in the bundle, used when <code>original_filenames</code> set to <code>true</code>). Allowed placeholder is <code>%LANG_ISO%</code>."},"all_platforms":{"type":"boolean","description":"Enable to include all platform keys. If disabled, only the keys, associated with the platform of the <code>format</code> will be exported."},"filter_langs":{"type":"array","items":{"type":"string"},"description":"List of languages to export. Omit this parameter for all languages."},"filter_data":{"type":"array","items":{"type":"string","enum":["last_reviewed_only","nonhidden","reviewed","reviewed_only","translated","untranslated","verified"]},"description":"Narrow export data range. Allowed values are <code>translated</code> or <code>untranslated</code>, <code>reviewed</code> (or <code>reviewed_only</code>), <code>last_reviewed_only</code>, <code>verified</code> and <code>nonhidden</code>."},"filter_filenames":{"type":"array","items":{"type":"string"},"description":"Only keys attributed to selected files will be included. Leave empty for all."},"add_newline_eof":{"type":"boolean","description":"Enable to add new line at end of file (if supported by format)."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"Only translations attributed to selected custom statuses will be included. Leave empty for all."},"include_tags":{"type":"array","items":{"type":"string"},"description":"Narrow export range to tags specified."},"exclude_tags":{"type":"array","items":{"type":"string"},"description":"Specify to exclude keys with these tags."},"export_sort":{"type":"string","description":"Export key sort mode. Allowed value are <code>first_added</code>, <code>last_added</code>, <code>last_updated</code>, <code>a_z</code>, <code>z_a</code>."},"export_empty_as":{"type":"string","description":"Select how you would like empty translations to be exported. Allowed values are <code>empty</code> to keep empty, <code>base</code> to replace with the base language value, <code>null</code> to replace with null (YAML export only), or <code>skip</code> to omit.","enum":["base","empty","null","skip"]},"export_null_as":{"type":"string","description":"(Ruby on Rails YAML export only) Select how you would like null (void) translations to be exported. Allowed values are <code>null</code> to keep null, <code>empty</code> to replace with empty string.","enum":["empty","null"]},"include_comments":{"type":"boolean","description":"Enable to include key comments and description in exported file (if supported by the format)."},"include_description":{"type":"boolean","description":"Enable to include key description in exported file (if supported by the format)."},"include_pids":{"type":"array","items":{"type":"string"},"description":"Other projects ID's, which keys should be included with this export."},"triggers":{"type":"array","items":{"type":"string","enum":["amazons3","azure","bitbucket","gcs","github","gitlab"]},"description":"Trigger integration exports (must be enabled in project settings). Allowed values are <code>amazons3</code>, <code>gcs</code>, <code>github</code>, <code>github-enterprise</code>, <code>gitlab</code>, <code>bitbucket</code>, <code>bitbucket-enterprise</code>, <code>azure</code>."},"filter_repositories":{"type":"array","items":{"type":"string"},"description":"Pull requests will be created only for listed repositories (<code>organization/repository</code> format). Leave empty array to process all configured integrations by platform only."},"replace_breaks":{"type":"boolean","description":"Enable to replace line breaks in exported translations with \\n."},"disable_references":{"type":"boolean","description":"Enable to skip automatic replace of key reference placeholders (e.g. [%key:hello_world%]) with their corresponding translations."},"plural_format":{"type":"string","description":"Override the default plural format for the file type. Allowed values are <code>json_string</code>, <code>icu</code>, <code>array</code>, <code>generic</code>, <code>symfony</code>, <code>i18next</code>, <code>i18next_v4</code>. See Plurals and placeholders for more information about plural support for specific file formats.","enum":["array","generic","i18next","i18next_v4","icu","json_string","symfony"]},"placeholder_format":{"type":"string","description":"Override the default placeholder format for the file type. Allowed values are <code>printf</code>, <code>ios</code>, <code>icu</code>, <code>net</code>, <code>symfony</code>, <code>i18n</code>, <code>raw</code>). See Plurals and placeholders for more information.","enum":["icu","ios","net","printf","symfony","i18n","raw"]},"webhook_url":{"type":"string","description":"Once the export is complete, sends a HTTP POST with the generated bundle URL to the specified URL."},"language_mapping":{"type":"array","items":{"type":"object","properties":{"original_language_iso":{"type":"string","description":"Original language code as defined in language settings."},"custom_language_iso":{"type":"string","description":"Language code to replace the original one with."}}},"description":"List of languages to override default iso codes for this export."},"icu_numeric":{"type":"boolean","description":"If enabled, plural forms <code>zero</code>, <code>one</code> and <code>two</code> will be replaced with <code>=0</code>, <code>=1</code> and <code>=2</code> respectively. Only works for ICU plural format."},"escape_percent":{"type":"boolean","description":"Only works for printf placeholder format. When enabled, all universal percent placeholders \"[%]\" will be always exported as \"%%\"."},"indentation":{"type":"string","description":"Provide to override default indentation in supported files. Allowed values are <code>default</code>, <code>1sp</code>, <code>2sp</code>, <code>3sp</code>, <code>4sp</code>, <code>5sp</code>, <code>6sp</code>, <code>7sp</code>, <code>8sp</code> and <code>tab</code>.","enum":["1sp","2sp","3sp","4sp","5sp","6sp","7sp","8sp","default","tab"]},"yaml_include_root":{"type":"boolean","description":"(YAML export only). Enable to include language ISO code as root key."},"json_unescaped_slashes":{"type":"boolean","description":"(JSON export only). Enable to leave forward slashes unescaped."},"java_properties_encoding":{"type":"string","description":"(Java Properties export only). Encoding for .properties files. Allowed values are <code>utf-8</code> and <code>latin-1</code>."},"java_properties_separator":{"type":"string","description":"(Java Properties export only). Separator for keys/values in .properties files. Allowed values are <code>=</code> and <code>:</code>."},"bundle_description":{"type":"string","description":"Description of the created bundle. Applies to <code>ios_sdk</code> or <code>android_sdk</code> OTA SDK bundles."},"filter_task_id":{"type":"number","description":"Only keys attributed to the task will be included. Available only for offline_xliff file format."},"compact":{"type":"boolean","description":"(ARB export only). Export the minimum required structure for use in production. Don't include metadata such as context, comments and screenshots."}}}}}}}},"/projects/{project_id}:{branch}/files/download":{"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","bundle_url":"https://s3-eu-west-1.amazonaws.com/lokalise-assets/export/MyApp-locale.zip"},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"bundle_url":{"type":"string"}}}}}}},"summary":"Download files","operationId":"Download files","description":"Exports project files as a .zip bundle. Generated bundle will be uploaded to an Amazon S3 bucket, which will be stored there for 1 month available to download. As the bundle is generated and uploaded you would get a response with the URL to the file. Requires *Download files* admin right.\n\nThere are two ways to group keys by filenames when you are exporting - either all keys to a single file per language or use the previously assigned filenames. <a href=\"https://developers.lokalise.com/docs/webhooks-guide\" target=\"`_new`\">Learn more</a>.\n\nRequires <code>read_files</code> OAuth access scope.\n\n*Please note: Starting June 1st, 2025, this endpoint will be limited to projects with under 10,000 key-language pairs, for more details <a href=\"https://developers.lokalise.com/reference/file-download-limitations\" target=\"`_new`\">See our API limits page</a>*","tags":["Files"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"format":"json","original_filenames":true},"schema":{"type":"object","required":["format"],"properties":{"format":{"type":"string","description":"File format (e.g. json, strings, xml). Must be file extension of any of the file formats we support. May also be <code>ios_sdk</code> or <code>android_sdk</code> for respective OTA SDK bundles."},"original_filenames":{"type":"boolean","description":"Enable to use original filenames/formats. If set to <code>false</code> all keys will be export to a single file per language."},"bundle_structure":{"type":"string","description":"Bundle structure, used when <code>original_filenames</code> set to <code>false</code>. Allowed placeholders are <code>%LANG_ISO%</code>, <code>%LANG_NAME%</code>, <code>%FORMAT%</code> and <code>%PROJECT_NAME%</code>)."},"directory_prefix":{"type":"string","description":"Directory prefix in the bundle, used when <code>original_filenames</code> set to <code>true</code>). Allowed placeholder is <code>%LANG_ISO%</code>."},"all_platforms":{"type":"boolean","description":"Enable to include all platform keys. If disabled, only the keys, associated with the platform of the <code>format</code> will be exported."},"filter_langs":{"type":"array","items":{"type":"string"},"description":"List of languages to export. Omit this parameter for all languages."},"filter_data":{"type":"array","items":{"type":"string","enum":["last_reviewed_only","nonhidden","reviewed","reviewed_only","translated","untranslated","verified"]},"description":"Narrow export data range. Allowed values are <code>translated</code> or <code>untranslated</code>, <code>reviewed</code> (or <code>reviewed_only</code>), <code>last_reviewed_only</code>, <code>verified</code> and <code>nonhidden</code>."},"filter_filenames":{"type":"array","items":{"type":"string"},"description":"Only keys attributed to selected files will be included. Leave empty for all."},"add_newline_eof":{"type":"boolean","description":"Enable to add new line at end of file (if supported by format)."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"Only translations attributed to selected custom statuses will be included. Leave empty for all."},"include_tags":{"type":"array","items":{"type":"string"},"description":"Narrow export range to tags specified."},"exclude_tags":{"type":"array","items":{"type":"string"},"description":"Specify to exclude keys with these tags."},"export_sort":{"type":"string","description":"Export key sort mode. Allowed value are <code>first_added</code>, <code>last_added</code>, <code>last_updated</code>, <code>a_z</code>, <code>z_a</code>."},"export_empty_as":{"type":"string","description":"Select how you would like empty translations to be exported. Allowed values are <code>empty</code> to keep empty, <code>base</code> to replace with the base language value, <code>null</code> to replace with null (YAML export only), or <code>skip</code> to omit.","enum":["base","empty","null","skip"]},"export_null_as":{"type":"string","description":"(Ruby on Rails YAML export only) Select how you would like null (void) translations to be exported. Allowed values are <code>null</code> to keep null, <code>empty</code> to replace with empty string.","enum":["empty","null"]},"include_comments":{"type":"boolean","description":"Enable to include key comments and description in exported file (if supported by the format)."},"include_description":{"type":"boolean","description":"Enable to include key description in exported file (if supported by the format)."},"include_pids":{"type":"array","items":{"type":"string"},"description":"Other projects ID's, which keys should be included with this export."},"triggers":{"type":"array","items":{"type":"string","enum":["amazons3","azure","bitbucket","gcs","github","gitlab"]},"description":"Trigger integration exports (must be enabled in project settings). Allowed values are <code>amazons3</code>, <code>gcs</code>, <code>github</code>, <code>github-enterprise</code>, <code>gitlab</code>, <code>bitbucket</code>, <code>bitbucket-enterprise</code>, <code>azure</code>."},"filter_repositories":{"type":"array","items":{"type":"string"},"description":"Pull requests will be created only for listed repositories (<code>organization/repository</code> format). Leave empty array to process all configured integrations by platform only."},"replace_breaks":{"type":"boolean","description":"Enable to replace line breaks in exported translations with \\n."},"disable_references":{"type":"boolean","description":"Enable to skip automatic replace of key reference placeholders (e.g. [%key:hello_world%]) with their corresponding translations."},"plural_format":{"type":"string","description":"Override the default plural format for the file type. Allowed values are <code>json_string</code>, <code>icu</code>, <code>array</code>, <code>generic</code>, <code>symfony</code>, <code>i18next</code>, <code>i18next_v4</code>. See Plurals and placeholders for more information about plural support for specific file formats.","enum":["array","generic","i18next","i18next_v4","icu","json_string","symfony"]},"placeholder_format":{"type":"string","description":"Override the default placeholder format for the file type. Allowed values are <code>printf</code>, <code>ios</code>, <code>icu</code>, <code>net</code>, <code>symfony</code>, <code>i18n</code>, <code>raw</code>). See Plurals and placeholders for more information.","enum":["icu","ios","net","printf","symfony","i18n","raw"]},"webhook_url":{"type":"string","description":"Once the export is complete, sends a HTTP POST with the generated bundle URL to the specified URL."},"language_mapping":{"type":"array","items":{"type":"object","properties":{"original_language_iso":{"type":"string","description":"Original language code as defined in language settings."},"custom_language_iso":{"type":"string","description":"Language code to replace the original one with."}}},"description":"List of languages to override default iso codes for this export."},"icu_numeric":{"type":"boolean","description":"If enabled, plural forms <code>zero</code>, <code>one</code> and <code>two</code> will be replaced with <code>=0</code>, <code>=1</code> and <code>=2</code> respectively. Only works for ICU plural format."},"escape_percent":{"type":"boolean","description":"Only works for printf placeholder format. When enabled, all universal percent placeholders \"[%]\" will be always exported as \"%%\"."},"indentation":{"type":"string","description":"Provide to override default indentation in supported files. Allowed values are <code>default</code>, <code>1sp</code>, <code>2sp</code>, <code>3sp</code>, <code>4sp</code>, <code>5sp</code>, <code>6sp</code>, <code>7sp</code>, <code>8sp</code> and <code>tab</code>.","enum":["1sp","2sp","3sp","4sp","5sp","6sp","7sp","8sp","default","tab"]},"yaml_include_root":{"type":"boolean","description":"(YAML export only). Enable to include language ISO code as root key."},"json_unescaped_slashes":{"type":"boolean","description":"(JSON export only). Enable to leave forward slashes unescaped."},"java_properties_encoding":{"type":"string","description":"(Java Properties export only). Encoding for .properties files. Allowed values are <code>utf-8</code> and <code>latin-1</code>."},"java_properties_separator":{"type":"string","description":"(Java Properties export only). Separator for keys/values in .properties files. Allowed values are <code>=</code> and <code>:</code>."},"bundle_description":{"type":"string","description":"Description of the created bundle. Applies to <code>ios_sdk</code> or <code>android_sdk</code> OTA SDK bundles."},"filter_task_id":{"type":"number","description":"Only keys attributed to the task will be included. Available only for offline_xliff file format."},"compact":{"type":"boolean","description":"(ARB export only). Export the minimum required structure for use in production. Don't include metadata such as context, comments and screenshots."}}}}}}}},"/projects/{project_id}:{branch}/files/{file_id}":{"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","file_deleted":true}}}},"400":{"description":"Bad Request - Action not supported by this project type","content":{"application/json":{"example":{"error":{"message":"Action not supported by this type of project","code":400}}}}}},"summary":"Delete a file","operationId":"Delete a file","description":"Deletes a file and its associated keys from the project.\n\n**Project Type Compatibility:**\n- ❌ **Software projects** (localization_files) - *File deletion not supported for Software projects*\n- ❌ **Documents projects** (paged_documents) - *Branching not supported for Documents projects*\n- ❌ **Marketing projects** (content_integration, marketing, marketing_integrations) - *Branching not supported for Marketing projects*\n\n**Note:** This endpoint requires branching support, which is only available for Software projects. However, Software projects do not support file deletion. This creates a logical conflict - this endpoint may not be practically usable.\n\nRequires <code>write_files</code> OAuth access scope.","tags":["Files"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"file_id","in":"path","description":"A unique identifier of the file.","required":true,"schema":{"type":"number"}}]}},"/projects/{project_id}:{branch}/keys":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"keys":{"type":"array","items":{"$ref":"#/components/schemas/Keys"}}}}}}}},"summary":"List all keys","operationId":"List all keys","description":"Lists all keys in the project. This endpoint supports cursor pagination for better performance with large datasets. When using cursor pagination, the response will include a <code>nextCursor</code> value in the response headers when more data is available. Continue making requests with the <code>nextCursor</code> value until no <code>nextCursor</code> is returned, indicating all data has been retrieved.\n\n<b>IMPORTANT:</b> We do not provide a content delivery network for your language files. Do not make a request to this endpoint every time a user visits your website/app. Instead, fetch the results from this endpoint from time to time, store them locally, and serve your visitors with static files/your database content. Alternatively, you may use our File Download endpoint with an Amazon S3/Google CouldStorage integration to automatically upload your language files to a bucket of your choice.\n\nRequires <code>read_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"disable_references","in":"query","description":"Whether to disable key references. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"include_comments","in":"query","description":"Whether to include comments. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"include_screenshots","in":"query","description":"Whether to include URL to screenshots. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"include_translations","in":"query","description":"Whether to include translations. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"filter_translation_lang_ids","in":"query","description":"One or more language ID to filter by (comma separated). Will include translations only for listed IDs.","required":false,"schema":{"type":"string"}},{"name":"filter_tags","in":"query","description":"One or more tags to filter by (comma separated).","required":false,"schema":{"type":"string"}},{"name":"filter_filenames","in":"query","description":"One or more filenames to filter by (comma separated).","required":false,"schema":{"type":"string"}},{"name":"filter_keys","in":"query","description":"One or more key name to filter by (comma separated). In case \"Per-platform keys\" is enabled in project settings, the filter will be applied to all platform names.","required":false,"schema":{"type":"string"}},{"name":"filter_key_ids","in":"query","description":"One or more key identifiers to filter by (comma separated).","required":false,"schema":{"type":"string"}},{"name":"filter_platforms","in":"query","description":"One or more platforms to filter by (comma separated). Possible values are <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code>.","required":false,"schema":{"type":"string"}},{"name":"filter_untranslated","in":"query","description":"Filter by untranslated keys. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"filter_qa_issues","in":"query","description":"One or more QA issues to filter by (comma separated). Possible values are <code>spelling\\_and\\_grammar</code>, <code>placeholders</code>, <code>html</code>, <code>url\\_count</code>, <code>url</code>, <code>email\\_count</code>, <code>email</code>, <code>brackets</code>, <code>numbers</code>, <code>leading\\_whitespace</code>, <code>trailing\\_whitespace</code>, <code>double\\_space</code>, <code>special\\_placeholder</code> and <code>unbalanced\\_brackets</code>.","required":false,"schema":{"type":"string"}},{"name":"filter_archived","in":"query","description":"One archived filter. Possible values are <code>include</code>, <code>exclude</code> and <code>only</code>.","required":false,"example":"include","schema":{"type":"string","enum":["exclude","include","only"]}},{"name":"pagination","in":"query","description":"Type of pagination. Possible values are <code>offset</code> and <code>cursor</code>. The default value is <code>offset</code>. Cursor pagination is performance-optimized and does not count total records or calculate remaining pages. When using cursor pagination, continue making requests until no <code>nextCursor</code> is returned in the response headers.","required":false,"example":"offset","schema":{"type":"string","enum":["offset","cursor"]}},{"name":"limit","in":"query","description":"Number of items to include (max 500).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}},{"name":"cursor","in":"query","description":"Return results starting from this cursor. When using cursor pagination, this parameter should contain the <code>nextCursor</code> value from the previous response. Continue pagination until no <code>nextCursor</code> is returned in the response headers.","required":false,"schema":{"type":"string"}}]},"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","keys":[{"key_id":331223,"created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"key_name":{"ios":"index.welcome","android":"index.welcome","web":"index.welcome","other":"index.welcome"},"filenames":{"ios":"","android":"","web":"","other":""},"description":"Index app welcome","platforms":["web"],"tags":[],"comments":{},"screenshots":{},"translations":[{"translation_id":444921,"key_id":331223,"language_iso":"en","translation":"Welcome","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":492},{"translation_id":444929,"key_id":331223,"language_iso":"ru","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":null}]},{"key_id":331224,"created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"key_name":{"ios":"index.apple","android":"index.apple","web":"index.apple","other":"index.apple"},"filenames":{"ios":"","android":"","web":"","other":""},"description":"Welcome apple","platforms":["web"],"is_plural":true,"tags":[],"comments":{},"screenshots":{},"translations":[{"translation_id":444941,"key_id":331224,"language_iso":"en","translation":"{\"one\":\"I have one apple\",\"other\":\"I have a lot of apples\"}","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":9147},{"translation_id":444949,"key_id":331224,"language_iso":"ru","translation":"{\"one\":\"\",\"few\":\"\",\"many\":\"\",\"other\":\"\"}","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":null}]}],"errors":[{"message":"This key name is already taken","code":400,"key":{"key_name":"index.hello"}}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"keys":{"type":"array","items":{"$ref":"#/components/schemas/Keys"}}}}}}}},"summary":"Create keys","operationId":"Create keys","description":"Creates one or more keys in the project. Requires *Manage keys* admin right. We recommend sending payload in chunks of up to 500 keys per request.\n\nRequires <code>write_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keys":[{"key_name":"index.welcome","description":"Index app welcome","platforms":["web"],"translations":[{"language_iso":"en","translation":"Welcome"}]},{"key_name":"index.apple","description":"Welcome apple","platforms":["web"],"is_plural":true,"translations":[{"language_iso":"en","translation":{"one":"I have one apple","other":"I have a lot of apples"}}]},{"key_name":"index.hello","platforms":["web"]}]},"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","required":["key_name","platforms"],"properties":{"key_name":{"type":"string","description":"Key identifier. For projects with enabled Per-platform key names, pass JSON encoded string with included <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code> string attributes."},"description":{"type":"string","description":"Description of the key."},"platforms":{"type":"array","items":{"type":"string","enum":["android","ios","other","web"]},"description":"List of platforms, enabled for this key. Possible values are <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code>."},"filenames":{"type":"object","properties":{"ios":{"type":"string","description":"\"iOS\" platform filename."},"android":{"type":"string","description":"\"Android\" platform filename."},"web":{"type":"string","description":"\"Web\" platform filename."},"other":{"type":"string","description":"\"Other\" platform filename."}},"description":"An object containing key filename attribute for each platform."},"tags":{"type":"array","items":{"type":"string"},"description":"List of tags for this keys."},"comments":{"type":"array","items":{"type":"object","properties":{"comment":{"type":"string","description":"The comment message."}}},"description":"List of comments for this key."},"screenshots":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"Title of the screenshot."},"description":{"type":"string","description":"Description of the screenshot."},"screenshot_tags":{"type":"array","items":{"type":"string"},"description":"List of screenshot tags."},"data":{"type":"string","description":"Base64 encoded screenshot (with leading image type 'data:image/jpeg;base64,')."}}},"description":"List of screenshots, attached to this key."},"translations":{"type":"array","items":{"type":"object","properties":{"language_iso":{"type":"string","description":"Unique code of the language of the translation."},"translation":{"type":"string","description":"The actual translation. Pass as an object, in case it includes plural forms and <code>is_plural</code> is <code>true</code>."},"is_reviewed":{"type":"boolean","description":"Whether the translation is marked as Reviewed."},"is_unverified":{"type":"boolean","description":"Whether the translation is marked as Unverified."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"Custom translation status IDs to assign to translation."}}},"description":"Translations for all languages."},"is_plural":{"type":"boolean","description":"Whether this key is plural."},"plural_name":{"type":"string","description":"Optional custom plural name (used in some formats)."},"is_hidden":{"type":"boolean","description":"Whether this key is hidden from non-admins (translators)."},"is_archived":{"type":"boolean","description":"Whether this key is archived."},"context":{"type":"string","description":"Optional context of the key (used with some file formats)."},"char_limit":{"type":"number","description":"Maximum allowed number of characters in translations for this key."},"custom_attributes":{"type":"string","description":"JSON encoded string containing <a href=\"https://docs.lokalise.com/developer-docs/custom-key-attributes\">custom attributes</a> (if any)."}}},"description":"Keys to be added to the project"},"use_automations":{"type":"boolean","description":"Whether to run automations on the new key translations."}}}}}}},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","keys":[{"key_id":331223,"created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"key_name":{"ios":"index.welcome","android":"index.welcome","web":"index.welcome","other":"index.welcome"},"filenames":{"ios":"","android":"","web":"","other":""},"description":"Index app welcome","platforms":["web"],"tags":[],"comments":{},"screenshots":{},"translations":[{"translation_id":444921,"key_id":331223,"language_iso":"en","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":512},{"translation_id":444929,"key_id":331223,"language_iso":"ru","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":null}]},{"key_id":331224,"created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"key_name":{"ios":"index.welcome","android":"index.welcome","web":"index.welcome","other":"index.welcome"},"filenames":{"ios":"","android":"","web":"","other":""},"description":"Index app welcome","platforms":["web"],"tags":[],"comments":{},"screenshots":{},"translations":[{"translation_id":444921,"key_id":331223,"language_iso":"en","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":906},{"translation_id":444929,"key_id":331223,"language_iso":"ru","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":null}]}],"errors":{}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"key":{"$ref":"#/components/schemas/Keys"}}}}}}},"summary":"Multi-update","operationId":"Bulk update","description":"Updates one or more keys in the project. Requires *Manage keys* admin right.\n\nRequires <code>write_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keys":[{"key_id":331223,"key_name":"index.welcome","description":"Index app welcome","platforms":["web"]},{"key_id":331224,"key_name":"index.hello","description":"Index greetings","platforms":["web"]}]},"schema":{"type":"object","properties":{"keys":{"type":"array","items":{"type":"object","required":["key_id"],"properties":{"key_id":{"type":"number","description":"A unique identifier of the key."},"key_name":{"type":"string","description":"Key identifier. For projects with enabled Per-platform key names, pass JSON encoded string with included <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code> string attributes."},"description":{"type":"string","description":"Description of the key."},"platforms":{"type":"array","items":{"type":"string","enum":["android","ios","other","web"]},"description":"List of platforms, enabled for this key. Possible values are <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code>."},"filenames":{"type":"object","properties":{"ios":{"type":"string","description":"\"iOS\" platform filename."},"android":{"type":"string","description":"\"Android\" platform filename."},"web":{"type":"string","description":"\"Web\" platform filename."},"other":{"type":"string","description":"\"Other\" platform filename."}},"description":"An object containing key filename attribute for each platform."},"tags":{"type":"array","items":{"type":"string"},"description":"List of tags for this keys."},"merge_tags":{"type":"boolean","description":"Enable to merge specified tags with the current tags attached to the key."},"comments":{"type":"array","items":{"type":"object","properties":{"comment":{"type":"string","description":"The comment message."}}},"description":"List of comments for this key."},"screenshots":{"type":"array","items":{"type":"object","properties":{"title":{"type":"string","description":"Title of the screenshot."},"description":{"type":"string","description":"Description of the screenshot."},"screenshot_tags":{"type":"array","items":{"type":"string"},"description":"List of screenshot tags."},"data":{"type":"string","description":"Base64 encoded screenshot (with leading image type 'data:image/jpeg;base64,')."}}},"description":"List of screenshots, attached to this key."},"translations":{"type":"array","items":{"type":"object","properties":{"language_iso":{"type":"string","description":"Unique code of the language of the translation."},"translation":{"type":"string","description":"The actual translation. Pass as an object, in case it includes plural forms and <code>is_plural</code> is <code>true</code>."},"is_reviewed":{"type":"boolean","description":"Whether the translation is marked as Reviewed."},"is_unverified":{"type":"boolean","description":"Whether the translation is marked as Unverified."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"Custom translation status IDs to assign to translation (existing statuses will be replaced)."},"merge_custom_translation_statuses":{"type":"boolean","description":"If you do not want statuses to be replaced but instead to be merged with provided then set this to true."}}},"description":"Translations for all languages."},"is_plural":{"type":"boolean","description":"Whether this key is plural."},"plural_name":{"type":"string","description":"Optional custom plural name (used in some formats)."},"is_hidden":{"type":"boolean","description":"Whether this key is hidden from non-admins (translators)."},"is_archived":{"type":"boolean","description":"Whether this key is archived."},"context":{"type":"string","description":"Optional context of the key (used with some file formats)."},"char_limit":{"type":"number","description":"Maximum allowed number of characters in translations for this key."},"custom_attributes":{"type":"string","description":"JSON encoded string containing <a href=\"https://docs.lokalise.com/developer-docs/custom-key-attributes\">custom attributes</a> (if any)."}}},"description":"Keys to update"},"use_automations":{"type":"boolean","description":"Whether to run automations on the updated key translations."}}}}}}},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","keys_removed":true,"keys_locked":0},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"keys_removed":{"type":"boolean"},"keys_locked":{"type":"integer"}}}}}}},"summary":"Delete multiple keys","operationId":"Delete multiple keys","description":"Deletes multiple keys from the project. Requires *Manage keys* admin right.\n\nRequires <code>write_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"keys":[12345,12346]},"schema":{"type":"object","required":["keys"],"properties":{"keys":{"type":"array","items":{"type":"string"},"description":"List of key ids."}}}}}}}},"/projects/{project_id}:{branch}/keys/{key_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","key":{"key_id":222222,"created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"key_name":{"ios":"index_welcome","android":"indexWelcome","web":"index.welcome","other":"welcome-index"},"filenames":{"ios":"","android":"","web":"","other":""},"description":"Index page welcome","platforms":["web","other"],"tags":["main","index"],"comments":[{"comment_id":233112,"comment":"Is there an exclamation sign?","added_by":420,"added_by_email":"user@mycompany.com","added_at":"2018-12-31 12:00:00 (Etc/UTC)","added_at_timestamp":1546257600}],"screenshots":[{"screenshot_id":11233,"title":"Welcome page","description":"","screenshot_tags":["index"],"url":"https://s3-eu-west-1.amazonaws.com/files/screenshots/welcome.jpg","created_at":"2019-02-01 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600}],"translations":[{"translation_id":444212,"key_id":222222,"language_iso":"en","translation":"Welcome to MyApp!","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":true,"reviewed_by":1357,"words":3,"custom_translation_statuses":{},"task_id":95},{"translation_id":444147,"key_id":222222,"language_iso":"ru","translation":"Добро пожаловать!","modified_by":422,"modified_by_email":"translator@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":2,"custom_translation_statuses":{},"task_id":null}]}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"key":{"$ref":"#/components/schemas/Keys"}}}}}}},"summary":"Retrieve a key","operationId":"Retrieve a key","description":"Retrieves a [Key](#object-keys) object.\n\nRequires <code>read_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}},{"name":"disable_references","in":"query","description":"Whether to disable key references. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}}]},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","key":{"key_id":331223,"created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"key_name":{"ios":"new.index.welcome","android":"index.welcome","web":"index.welcome","other":"index.welcome"},"filenames":{"ios":"","android":"","web":"","other":""},"description":"Index app welcome","platforms":["web","other"],"tags":[],"comments":{},"screenshots":{},"translations":[{"translation_id":444921,"key_id":331223,"language_iso":"en","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":121},{"translation_id":444929,"key_id":331223,"language_iso":"ru","translation":"","modified_by":420,"modified_by_email":"user@mycompany.com","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"is_reviewed":false,"reviewed_by":0,"words":0,"custom_translation_statuses":{},"task_id":null}]}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"key":{"$ref":"#/components/schemas/Keys"}}}}}}},"summary":"Update a key","operationId":"Update a key","description":"Updates the properties of a key and it's associated objects. Requires *Manage keys* admin right.\n\nRequires <code>write_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"platforms":["web","other"],"description":"Index app welcome"},"schema":{"type":"object","properties":{"key_name":{"type":"string","description":"Key identifier. For projects with enabled Per-platform key names, pass JSON encoded string with included <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code> string attributes."},"description":{"type":"string","description":"Description of the key."},"platforms":{"type":"array","items":{"type":"string","enum":["android","ios","other","web"]},"description":"List of platforms, enabled for this key. Possible values are <code>ios</code>, <code>android</code>, <code>web</code> and <code>other</code>."},"filenames":{"type":"object","properties":{"ios":{"type":"string","description":"\"iOS\" platform filename."},"android":{"type":"string","description":"\"Android\" platform filename."},"web":{"type":"string","description":"\"Web\" platform filename."},"other":{"type":"string","description":"\"Other\" platform filename."}},"description":"An object containing key filename attribute for each platform."},"tags":{"type":"array","items":{"type":"string"},"description":"List of tags for this keys."},"merge_tags":{"type":"boolean","description":"Enable to merge specified tags with the current tags attached to the key."},"is_plural":{"type":"boolean","description":"Whether this key is plural."},"plural_name":{"type":"string","description":"Optional custom plural name (used in some formats)."},"is_hidden":{"type":"boolean","description":"Whether this key is hidden from non-admins (translators)."},"is_archived":{"type":"boolean","description":"Whether this key is archived."},"context":{"type":"string","description":"Optional context of the key (used with some file formats)."},"char_limit":{"type":"number","description":"Maximum allowed number of characters in translations for this key."},"custom_attributes":{"type":"string","description":"JSON encoded string containing <a href=\"https://docs.lokalise.com/developer-docs/custom-key-attributes\">custom attributes</a> (if any)."}}}}}}},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","key_removed":false,"keys_locked":1},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"key_removed":{"type":"boolean"},"keys_locked":{"type":"integer"}}}}}}},"summary":"Delete a key","operationId":"Delete a key","description":"Deletes a key from the project. Requires *Manage keys* admin right.\n\n**Project Type Compatibility:**\n- ✅ **Software projects** (localization_files) - *Only project type that supports branching and individual key operations*\n- ❌ **Documents projects** (paged_documents) - *Branching not supported*\n- ❌ **Marketing projects** (content_integration, marketing, marketing_integrations) - *Branching not supported*\n\nRequires <code>delete_keys</code> OAuth access scope.","tags":["Keys"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"key_id","in":"path","description":"A unique identifier of the key.","required":true,"schema":{"type":"number"}}]}},"/projects/{project_id}:{branch}/languages":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"languages":{"type":"array","items":{"$ref":"#/components/schemas/Languages"}}}}}}}},"summary":"List project languages","operationId":"List project languages","description":"Retrieves a list of project languages.\n\nRequires <code>read_languages</code> OAuth access scope.","tags":["Languages"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]},"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","languages":[{"lang_id":640,"lang_iso":"en","lang_name":"English","is_rtl":false,"plural_forms":["one","other"],"cc_iso":"en"},{"lang_id":597,"lang_iso":"ru","lang_name":"Russian","is_rtl":false,"plural_forms":["one","few","many","other"],"cc_iso":"ru"}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"languages":{"type":"array","items":{"$ref":"#/components/schemas/Languages"}}}}}}}},"summary":"Create languages","operationId":"Create languages","description":"Creates one or more languages in the project. Requires *Manage languages* admin right.\n\nThe `language_iso` is the identifer of one of the system languages. You are only required to include the `language_iso` attribute, however you may override the default language code, language name and plural forms as well.\n\nRequires <code>write_languages</code> OAuth access scope.","tags":["Languages"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"languages":[{"lang_iso":"en"},{"lang_iso":"ru"}]},"schema":{"type":"object","properties":{"languages":{"type":"array","items":{"type":"object","required":["lang_iso"],"properties":{"lang_iso":{"type":"string","description":"A unique language code in the system."},"custom_iso":{"type":"string","description":"Override language/locale code."},"custom_name":{"type":"string","description":"Override language name."},"custom_plural_forms":{"type":"array","items":{"type":"string"},"description":"Override list of supported plural forms for this language."}}},"description":"A set of languages to add"}}}}}}}},"/projects/{project_id}:{branch}/languages/{lang_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","language":{"lang_id":640,"lang_iso":"en","lang_name":"English","is_rtl":false,"plural_forms":["one","other"]}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"language":{"$ref":"#/components/schemas/Languages"}}}}}}},"summary":"Retrieve a language","operationId":"Retrieve a language","description":"Retrieves a [Language](#object-languages) object.\n\nRequires <code>read_languages</code> OAuth access scope.","tags":["Languages"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"lang_id","in":"path","description":"A unique language identifier in the system.","required":true,"schema":{"type":"number"}}]},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","language":{"lang_id":640,"lang_iso":"en-US","lang_name":"English","is_rtl":false,"plural_forms":["one","zero","few","other"]}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"language":{"$ref":"#/components/schemas/Languages"}}}}}}},"summary":"Update a language","operationId":"Update a language","description":"Updates the properties of a language. Requires *Manage languages* admin right.\n\nRequires <code>write_languages</code> OAuth access scope.","tags":["Languages"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"lang_id","in":"path","description":"A unique language identifier in the system.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"lang_iso":"en-US","plural_forms":["one","zero","few","other"]},"schema":{"type":"object","properties":{"lang_iso":{"type":"string","description":"Language/locale code."},"lang_name":{"type":"string","description":"Language name."},"plural_forms":{"type":"array","items":{"type":"string"},"description":"List of supported plural forms."}}}}}}},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"language_deleted":{"type":"boolean"}}}}}}},"summary":"Delete a language","operationId":"Delete a language","description":"Deletes a language from the project. Requires *Manage languages* admin right.\n\nRequires <code>write_languages</code> OAuth access scope.","tags":["Languages"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"lang_id","in":"path","description":"A unique language identifier in the system.","required":true,"schema":{"type":"number"}}]}},"/projects":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"projects":{"type":"array","items":{"$ref":"#/components/schemas/Projects"}}}}}}}},"summary":"List all projects","operationId":"List all projects","description":"Retrieves a list of projects available to the user, authorized with a token.\n\nRequires <code>read_projects</code> OAuth access scope.","tags":["Projects"],"parameters":[{"name":"filter_team_id","in":"query","description":"Limit results to team ID.","required":false,"schema":{"type":"number"}},{"name":"filter_names","in":"query","description":"One or more project names to filter by (comma separated).","required":false,"schema":{"type":"string"}},{"name":"include_statistics","in":"query","description":"Whether to include project statistics. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"1","schema":{"type":"number","enum":["0","1"]}},{"name":"include_settings","in":"query","description":"Whether to include project settings. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"1","schema":{"type":"number","enum":["0","1"]}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]},"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","project_type":"localization_files","name":"TheApp Project","description":"iOS + Android strings of TheApp. https://theapp.com","created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"created_by":420,"created_by_email":"user@mycompany.com","team_id":12345,"base_language_id":640,"base_language_iso":"en-us","settings":{"per_platform_key_names":false,"reviewing":false,"auto_toggle_unverified":true,"offline_translation":false,"key_editing":true,"inline_machine_translations":true,"custom_translation_statuses":true,"custom_translation_statuses_allow_multiple":false,"segmentation":false,"contributor_preview_download_enabled":false},"statistics":{"progress_total":0,"keys_total":0,"team":1,"base_words":0,"qa_issues_total":0,"qa_issues":{"not_reviewed":0,"unverified":0,"spelling_grammar":0,"inconsistent_placeholders":0,"inconsistent_html":0,"different_number_of_urls":0,"different_urls":0,"leading_whitespace":0,"trailing_whitespace":0,"different_number_of_email_address":0,"different_email_address":0,"different_brackets":0,"different_numbers":0,"double_space":1,"special_placeholder":0,"unbalanced_brackets":0},"languages":[{"language_id":640,"language_iso":"en-us","progress":0,"words_to_do":0},{"language_id":610,"language_iso":"en-gb","progress":0,"words_to_do":0}]}},"schema":{"$ref":"#/components/schemas/Projects"}}}}},"summary":"Create a project","operationId":"Create a project","description":"Creates a new project in the specified team. Requires *Admin* role in the team.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Projects"],"parameters":[],"requestBody":{"content":{"application/json":{"example":{"name":"TheApp Project","description":"iOS + Android strings of TheApp. https://theapp.com","languages":[{"lang_iso":"en","custom_iso":"en-us"},{"lang_iso":"en_GB","custom_iso":"en-gb"}],"base_lang_iso":"en-us"},"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the project."},"team_id":{"type":"number","description":"ID of the team to create a project in. If this parameter is omitted, the project will be created in current team of the user, whose API token is specified."},"description":{"type":"string","description":"Description of the project."},"languages":{"type":"array","items":{"type":"object","required":["lang_iso"],"properties":{"lang_iso":{"type":"string","description":"A unique language code in the system."},"custom_iso":{"type":"string","description":"Override language/locale code."}}},"description":"List of languages to add."},"base_lang_iso":{"type":"string","description":"Language/locale code of the project base language. Should be in a scope of <code>languages</code> list. Use <code>custom_iso</code> code in case it was defined."},"project_type":{"type":"string","description":"Project type. **Note: Only <code>localization_files</code> projects support branching.** Available types:\\n- <code>localization_files</code> - **Software projects** (Web and mobile) - Supports branching, individual key management, JWT/OTA tokens\\n- <code>paged_documents</code> - **Documents projects** (Ad hoc documents) - ⚠️ *Branching not supported*\\n- <code>content_integration</code> - **Marketing projects** (Marketing and support) - ⚠️ *Branching not supported*","enum":["localization_files","paged_documents","content_integration"]},"is_segmentation_enabled":{"type":"boolean","description":"Enable Segmentation feature for project."}}}}}}}},"/projects/{project_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","project_type":"localization_files","name":"TheApp Project","description":"iOS + Android strings of TheApp. https://theapp.com","created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"created_by":420,"created_by_email":"user@mycompany.com","team_id":12345,"base_language_id":640,"base_language_iso":"en","settings":{"per_platform_key_names":false,"reviewing":false,"auto_toggle_unverified":true,"offline_translation":false,"key_editing":true,"inline_machine_translations":true,"custom_translation_statuses":true,"custom_translation_statuses_allow_multiple":false,"segmentation":false,"contributor_preview_download_enabled":false},"statistics":{"progress_total":87,"keys_total":13,"team":2,"base_words":22,"qa_issues_total":65,"qa_issues":{"not_reviewed":39,"unverified":7,"spelling_grammar":4,"inconsistent_placeholders":5,"inconsistent_html":1,"different_number_of_urls":0,"different_urls":1,"leading_whitespace":1,"trailing_whitespace":0,"different_number_of_email_address":0,"different_email_address":0,"different_brackets":6,"different_numbers":1,"double_space":1,"special_placeholder":0,"unbalanced_brackets":0},"languages":[{"language_id":640,"language_iso":"en","progress":100,"words_to_do":0},{"language_id":800,"language_iso":"lv_LV","progress":100,"words_to_do":0},{"language_id":673,"language_iso":"fr","progress":63,"words_to_do":8}]}},"schema":{"$ref":"#/components/schemas/Projects"}}}}},"summary":"Retrieve a project","operationId":"Retrieve a project","description":"Retrieves a [Project](#object-projects) object.\n\nRequires <code>read_projects</code> OAuth access scope.","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}}]},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","project_type":"localization_files","name":"TheApp Project","description":"iOS + Android strings of TheApp. https://theapp.com","created_at":"2018-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1546257600,"created_by":420,"created_by_email":"user@mycompany.com","team_id":12345,"base_language_id":640,"base_language_iso":"en","settings":{"per_platform_key_names":false,"reviewing":false,"auto_toggle_unverified":true,"offline_translation":false,"key_editing":true,"inline_machine_translations":true,"custom_translation_statuses":true,"custom_translation_statuses_allow_multiple":false,"segmentation":false,"contributor_preview_download_enabled":false},"statistics":{"progress_total":87,"keys_total":13,"team":2,"base_words":22,"qa_issues_total":65,"qa_issues":{"not_reviewed":39,"unverified":7,"spelling_grammar":4,"inconsistent_placeholders":5,"inconsistent_html":1,"different_number_of_urls":0,"different_urls":1,"leading_whitespace":1,"trailing_whitespace":0,"different_number_of_email_address":0,"different_email_address":0,"different_brackets":6,"different_numbers":1,"double_space":1,"special_placeholder":0,"unbalanced_brackets":0},"languages":[{"language_id":640,"language_iso":"en","progress":100,"words_to_do":0},{"language_id":800,"language_iso":"lv_LV","progress":100,"words_to_do":0},{"language_id":673,"language_iso":"fr","progress":63,"words_to_do":8}]}},"schema":{"$ref":"#/components/schemas/Projects"}}}}},"summary":"Update a project","operationId":"Update a project","description":"Updates the details of a project. Requires *Manage settings* admin right.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"name":"TheZapp Project","description":"iOS + Android strings of TheZapp. https://thezapp.com"},"schema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Name of the project."},"description":{"type":"string","description":"Description of the project."}}}}}}},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"project_deleted":{"type":"boolean"}}}}}}},"summary":"Delete a project","operationId":"Delete a project","description":"Deletes a project.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}}]}},"/projects/{project_id}:{branch}/empty":{"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","keys_deleted":true},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"keys_deleted":{"type":"boolean"}}}}}}},"summary":"Empty a project","operationId":"Empty a project","description":"Deletes all keys and translations from the project. Requires *Manage settings* admin right.\n\nRequires <code>write_projects</code> OAuth access scope.","tags":["Projects"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}]}},"/projects/{project_id}:{branch}/processes":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Pagination-Total-Count":{"schema":{"type":"string"}},"X-Pagination-Page-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"767946315e9866d013c1d0.08299127","processes":[{"process_id":"2e0559e60e856555fbc15bdf78ab2b0ca3406e8f","type":"file-import","status":"finished","message":"","created_by":1234,"created_by_email":"example@example.com","created_at":"2020-04-20 13:43:43 (Etc/UTC)","created_at_timestamp":1587390223},{"process_id":"f70bbf40059386a568d42c0f80297477e252cc48","type":"file-import","status":"finished","message":"","created_by":1234,"created_by_email":"example@example.com","created_at":"2020-04-20 13:48:00 (Etc/UTC)","created_at_timestamp":1587390480}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"processes":{"type":"array","items":{"$ref":"#/components/schemas/QueuedProcesses"}}}}}}}},"summary":"List all processes","operationId":"List all processes","description":"Retrieves a list of [Queued process](#object-queued-processes) objects.\n\nRequires <code>read_background_processes</code> OAuth access scope.","tags":["Queued Processes"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]}},"/projects/{project_id}:{branch}/processes/{process_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"767946315e9866d013c1d0.08299127","process":{"process_id":"2e0559e60e856555fbc15bdf78ab2b0ca3406e8f","type":"file-import","status":"finished","message":"","created_by":1234,"created_by_email":"example@example.com","created_at":"2020-04-20 13:43:43 (Etc/UTC)","created_at_timestamp":1587390223,"details":{"files":[{"status":"finished","message":"","name_original":"index.json","name_custom":"index.json","word_count_total":2,"key_count_total":1,"key_count_inserted":0,"key_count_updated":0,"key_count_skipped":1}]}}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"process":{"$ref":"#/components/schemas/QueuedProcesses"}}}}}}},"summary":"Retrieve a process","operationId":"Retrieve a process","description":"Retrieves a [Queued process](#object-queued-processes) object with an additional <code>details</code> field containing information for a specific process type.\n\nRequires <code>read_background_processes</code> OAuth access scope.","tags":["Queued Processes"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"process_id","in":"path","description":"A unique process identifier.","required":true,"schema":{"type":"string"}}]}},"/projects/{project_id}:{branch}/screenshots/{screenshot_id}":{"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"screenshot":{"$ref":"#/components/schemas/Screenshots"}}}}}}},"summary":"Update a screenshot","operationId":"Update a screenshot","description":"Updates the properties of a screenshot. Requires *Manage screenshots* admin right.\n\nRequires <code>write_screenshots</code> OAuth access scope.","tags":["Screenshots"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"screenshot_id","in":"path","description":"A unique identifier of the screenshot.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"key_ids":[1132290,1132292],"tags":["main"]},"schema":{"type":"object","properties":{"title":{"type":"string","description":"Set screenshot title (optional)."},"description":{"type":"string","description":"Set screenshot description."},"key_ids":{"type":"array","items":{"type":"string"},"description":" Attach the screenshot to key IDs specified."},"tags":{"type":"array","items":{"type":"string"},"description":"List of tags to add to the uploaded screenshot."}}}}}}}},"/projects/{project_id}:{branch}/tasks":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"example":{"project_id":"20008339586cded200e0d8.29879849","tasks":[{"task_id":55392,"title":"Voicemail messages","can_be_parent":false,"task_type":"translation","parent_task_id":12345,"closing_tags":["tag_one","tag_two"],"do_lock_translations":false,"description":"Need your help with some voicemail message translation. Thanks!","status":"in_progress","progress":25,"due_date":"2024-12-31 12:00:00 (Etc/UTC)","due_date_timestamp":1546257600,"keys_count":3,"words_count":91,"created_at":"2021-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1640944800,"created_by":420,"created_by_email":"manager@yourcompany.com","languages":[{"language_iso":"fi","language_id":610,"language_name":"Finnish","users":[{"user_id":421,"email":"jdoe@mycompany.com","fullname":"John Doe"}],"groups":[{"id":191,"name":"Voicemail translators"}],"keys":[11212,11241,11245],"status":"created","progress":0,"initial_tm_leverage":{"0%+":91,"60%+":0,"75%+":0,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":0,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null},{"language_iso":"ru","language_id":643,"language_name":"Russian","users":[{"user_id":422,"email":"jfox@mycompany.com","fullname":"James Fox"}],"groups":{},"keys":[11212,11241,11245],"status":"in progress","progress":80,"initial_tm_leverage":{"0%+":91,"60%+":0,"75%+":0,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":73,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null}],"source_language_iso":"en","auto_close_languages":true,"auto_close_task":true,"auto_close_items":true,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null,"custom_translation_status_ids":[77,85,86]}]},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"tasks":{"type":"array","items":{"$ref":"#/components/schemas/Tasks"}}}}}}}},"summary":"List all tasks","operationId":"List all tasks","description":"Lists all tasks in the project.\n\nRequires <code>read_tasks</code> OAuth access scope.","tags":["Tasks"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"filter_title","in":"query","description":"Set title filter for the list.","required":false,"schema":{"type":"string"}},{"name":"filter_statuses","in":"query","description":"One or more task statuses to filter by (comma separated). Possible values are <code>created</code>, <code>queued</code>, <code>in\\_progress</code> and <code>completed</code>.\n","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}}]},"post":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"20008339586cded200e0d8.29879849","task":{"task_id":55392,"title":"Voicemail messages","description":"Need your help with some voicemail message translation. Thanks!","status":"in_progress","progress":0,"can_be_parent":true,"task_type":"review","parent_task_id":12345,"closing_tags":["tag_one","tag_two"],"do_lock_translations":true,"due_date":"2024-12-31 12:00:00 (Etc/UTC)","due_date_timestamp":1546257600,"keys_count":3,"words_count":91,"created_at":"2021-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1640944800,"created_by":420,"created_by_email":"manager@yourcompany.com","languages":[{"language_iso":"fi","language_id":610,"language_name":"Finnish","users":[{"user_id":421,"email":"jdoe@mycompany.com","fullname":"John Doe"}],"groups":{},"keys":[11212,11241,11245],"status":"created","progress":0,"initial_tm_leverage":{"0%+":0,"60%+":0,"75%+":0,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":0,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null},{"language_iso":"ru","language_id":643,"language_name":"Russian","users":{},"groups":[{"id":191,"name":"Voicemail translators"}],"keys":[11212,11241,11245],"status":"in progress","progress":0,"initial_tm_leverage":{"0%+":0,"60%+":0,"75%+":0,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":0,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null}],"source_language_iso":"en","auto_close_languages":true,"auto_close_task":true,"auto_close_items":true,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null,"custom_translation_status_ids":[77,85,86]}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"task":{"$ref":"#/components/schemas/Tasks"},"skipped_languages":{"type":"array","description":"Present only when some requested languages were ignored for AI tasks. Each entry describes an ignored language and the reason.","items":{"type":"object","required":["language_iso","reason"],"properties":{"language_iso":{"type":"string","description":"Language code that was ignored."},"reason":{"type":"string","description":"Reason why language was ignored."},"message":{"type":"string","description":"Human-readable explanation."}}}}}}}}}},"summary":"Create a task","operationId":"Create a task","description":"Creates a task in the project. Requires *Manage tasks* admin right.\nKeep in mind, that <code>initial_tm_leverage</code> attribute will be empty in server response. It's being calculated after the task is created and this process may take some time.\n\nRequires <code>write_tasks</code> OAuth access scope.","tags":["Tasks"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"title":"Voicemail messages","description":"Need your help with some voicemail message translation. Thanks!","due_date":"2024-12-31 12:00:00","keys":[11212,11241,11245],"languages":[{"language_iso":"fi","users":[421]},{"language_iso":"ru","groups":[191]}],"source_language_iso":"en","auto_close_languages":true,"auto_close_task":true,"auto_close_items":true,"task_type":"translation","parent_task_id":12345,"closing_tags":["tag_one","tag_two"],"do_lock_translations":true,"custom_translation_status_ids":[77,85,86]},"schema":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Task title."},"description":{"type":"string","description":"Brief task description. Used as instructions for AI in <code>automatic_translation</code> and <code>lqa_by_ai</code> task types."},"due_date":{"type":"string","description":"Due date in <code>Y-m-d H:i:s</code> format. Example: \"2024-12-24 23:59:59\""},"keys":{"type":"array","items":{"type":"string"},"description":"List of keys identifiers, included in task. Required if <code>parent_task_id</code> is not specified"},"languages":{"type":"array","items":{"type":"object","required":["language_iso"],"properties":{"language_iso":{"type":"string","description":"Language code."},"users":{"type":"array","items":{"type":"string"},"description":"List of user identifiers assigned to work on the language. **Must** be omitted for `automatic_translation` and `lqa_by_ai` task types."},"groups":{"type":"array","items":{"type":"string"},"description":"List of user-group identifiers assigned to work on the language. **Must** be omitted for `automatic_translation` and `lqa_by_ai` task types."}}},"description":"List of languages in the task. For <code>automatic_translation</code> and <code>lqa_by_ai</code> task types, unsupported languages will be ignored and returned in <code>skipped_languages</code> in the response."},"source_language_iso":{"type":"string","description":"Source language code for the task. Falls back to project base language if not provided."},"auto_close_languages":{"type":"boolean","description":"Whether languages should be closed automatically upon completion of the last item. **Must** be <code>true</code> or omit the property for `automatic_translation` and `lqa_by_ai` task types."},"auto_close_task":{"type":"boolean","description":"Whether the task should be automatically closed upon all language completion. **Must** be <code>true</code> or omit the property for `automatic_translation` and `lqa_by_ai` task types."},"auto_close_items":{"type":"boolean","description":"Whether the <code>translation</code> task items should be automatically marked as completed on edit. **Must** be <code>true</code> or omit the property for `automatic_translation` and `lqa_by_ai` task types."},"task_type":{"type":"string","default":"translation","enum":["translation","automatic_translation","lqa_by_ai","review"],"description":"Specify if task type is <code>translation</code> (default), <code>automatic_translation</code>, <code>lqa_by_ai</code> or <code>review</code>."},"parent_task_id":{"type":"number","description":"If <code>task_type</code> is <code>review</code>, it can have a parent task. Current task will be opened when parent task is closed."},"closing_tags":{"type":"array","items":{"type":"string"},"description":"Tags that will be added to affected keys when task is closed."},"do_lock_translations":{"type":"boolean","description":"If set to true, will lock translations for non-assigned project members."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"IDs of custom translation statuses that will be applied to task items after item is completed."},"save_ai_translation_to_tm":{"type":"boolean","default":false,"description":"Save AI translations to Translation Memory. Only applicable for tasks with <code>task_type</code> set to <code>automatic_translation</code>. Defaults to false."},"apply_ai_tm100_matches":{"type":"boolean","default":false,"description":"Apply 100% translation memory matches. Only applicable for tasks with <code>task_type</code> set to <code>automatic_translation</code>. Defaults to false."},"mark_verified":{"type":"boolean","default":true,"description":"Mark translations as verified. Only applicable for tasks with <code>task_type</code> set to <code>automatic_translation</code>. Defaults to true."},"translate_all_segments":{"type":"boolean","default":false,"description":"Translate all segments including those with existing translations or TM matches. Only applicable for tasks with <code>task_type</code> set to <code>automatic_translation</code> in projects with segmentation enabled. When false, only empty segments will be translated. This parameter can only be set during task creation and cannot be modified or retrieved afterwards. Defaults to false."}}}}}}}},"/projects/{project_id}:{branch}/tasks/{task_id}/usage-metrics":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"data":{"processed_words":1542}},"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"processed_words":{"type":"integer","description":"The number of processed words consumed by the given task."}}}}}}}}},"summary":"Retrieve task usage metrics","operationId":"Retrieve task usage metrics","description":"Retrieves usage metrics for a specific task. Data is available from November 3rd 2025 onwards.\n\nRequires <code>read_tasks</code> OAuth access scope.","tags":["Tasks"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","description":"A unique task identifier.","required":true,"schema":{"type":"number"}}]}},"/projects/{project_id}:{branch}/tasks/{task_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"20008339586cded200e0d8.29879849","task":{"task_id":55392,"title":"Voicemail messages","description":"Need your help with some voicemail message translation. Thanks!","status":"in_progress","progress":80,"can_be_parent":true,"task_type":"review","parent_task_id":12345,"closing_tags":["tag_one","tag_two"],"do_lock_translations":false,"due_date":"20242-12-31 12:00:00 (Etc/UTC)","due_date_timestamp":1546257600,"keys_count":3,"words_count":91,"created_at":"2021-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1640944800,"created_by":420,"created_by_email":"manager@yourcompany.com","languages":[{"language_iso":"fi","language_id":610,"language_name":"Finnish","users":[{"user_id":421,"email":"jdoe@mycompany.com","fullname":"John Doe"}],"groups":[{"id":191,"name":"Voicemail translators"}],"keys":[11212,11241,11245],"status":"created","progress":0,"initial_tm_leverage":{"0%+":91,"60%+":0,"75%+":0,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":0,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null},{"language_iso":"ru","language_id":643,"language_name":"Russian","users":[{"user_id":422,"email":"jfox@mycompany.com","fullname":"James Fox"}],"groups":[{"id":191,"name":"Voicemail translators"}],"keys":[11212,11241,11245],"status":"in progress","progress":90,"initial_tm_leverage":{"0%+":60,"60%+":0,"75%+":31,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":82,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null}],"source_language_iso":"en","auto_close_languages":true,"auto_close_task":true,"auto_close_items":true,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null,"custom_translation_status_ids":[77,85,86]}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"task":{"$ref":"#/components/schemas/Tasks"}}}}}}},"summary":"Retrieve a task","operationId":"Retrieve a task","description":"Retrieves a [Task](#object-tasks) object.\n\nRequires <code>read_tasks</code> OAuth access scope.","tags":["Tasks"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","description":"A unique task identifier.","required":true,"schema":{"type":"number"}}]},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"20008339586cded200e0d8.29879849","task":{"task_id":55392,"title":"Voicemail messages","description":"Need your help with some voicemail message translation. Thanks!","status":"in_progress","progress":40,"can_be_parent":true,"task_type":"translation","parent_task_id":12345,"closing_tags":["tag_one","tag_two"],"do_lock_translations":false,"due_date":"2024-12-31 12:00:00 (Etc/UTC)","due_date_timestamp":1546257600,"keys_count":3,"words_count":91,"created_at":"2021-12-31 12:00:00 (Etc/UTC)","created_at_timestamp":1640944800,"created_by":420,"created_by_email":"manager@yourcompany.com","languages":[{"language_iso":"fi","language_id":610,"language_name":"Finnish","users":[{"user_id":421,"email":"jdoe@mycompany.com","fullname":"John Doe"}],"groups":[{"id":191,"name":"Voicemail translators"}],"keys":[11212,11241,11245],"status":"created","progress":0,"initial_tm_leverage":{"0%+":0,"60%+":31,"75%+":60,"95%+":0,"100%":0},"tm_leverage":{"status":"pending","value":null},"keys_count":3,"words_count":91,"done_words_count":0,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null},{"language_iso":"ru","language_id":643,"language_name":"Russian","users":[{"user_id":422,"email":"jfox@mycompany.com","fullname":"James Fox"}],"groups":{},"keys":[11212,11241,11245],"status":"in progress","progress":90,"initial_tm_leverage":{"0%+":91,"60%+":0,"75%+":0,"95%+":0,"100%":0},"tm_leverage":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"keys_count":3,"words_count":91,"done_words_count":82,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null}],"source_language_iso":"en","auto_close_languages":false,"auto_close_task":false,"completed_at":null,"completed_at_timestamp":null,"completed_by":null,"completed_by_email":null}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"task":{"$ref":"#/components/schemas/Tasks"}}}}}}},"summary":"Update a task","operationId":"Update a task","description":"Updates the properties of a task. Requires *Manage tasks* admin right.\n\nRequires <code>write_tasks</code> OAuth access scope.","tags":["Tasks"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","description":"A unique task identifier.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"due_date":"2024-12-31 12:00:00","auto_close_languages":false,"auto_close_task":false},"schema":{"type":"object","properties":{"title":{"type":"string","description":"Task title."},"description":{"type":"string","description":"Brief task description. Used as instructions for AI in <code>automatic_translation</code> and <code>lqa_by_ai</code> task types."},"due_date":{"type":"string","description":"Due date in <code>Y-m-d H:i:s</code> format. Example: \"2024-12-24 23:59:59\""},"languages":{"type":"array","items":{"type":"object","properties":{"language_iso":{"type":"string","description":"Language code."},"users":{"type":"array","items":{"type":"string"},"description":"List of user identifiers, assigned to work on the language."},"groups":{"type":"array","items":{"type":"string"},"description":"List of group identifiers, assigned to work on the language."},"close_language":{"type":"boolean","description":"Whether the language should be closed and notifications sent. Action cannot be undone."}}},"description":"List of languages in the task. This field **must** be omitted for <code>automatic_translation</code> and <code>lqa_by_ai</code> task types."},"auto_close_languages":{"type":"boolean","description":"Whether languages should be closed automatically upon completion of the last item. **Must** be <code>true</code> or omit the property for `automatic_translation` and `lqa_by_ai` task types."},"auto_close_task":{"type":"boolean","description":"Whether the task should be automatically closed upon all language completion. **Must** be <code>true</code> or omit the property for `automatic_translation` and `lqa_by_ai` task types."},"auto_close_items":{"type":"boolean","description":"Whether the <code>translation</code> task items should be automatically marked as completed on edit. **Must** be <code>true</code> or omit the property for `automatic_translation` and `lqa_by_ai` task types."},"close_task":{"type":"boolean","description":"Whether the task should be closed and notifications sent. The task cannot be reopened again."},"closing_tags":{"type":"array","items":{"type":"string"},"description":"Tags that will be added to affected keys when task is closed."},"do_lock_translations":{"type":"boolean","description":"If set to true, will lock translations for non-assigned project members."}}}}}}},"delete":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","task_deleted":true},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"task_deleted":{"type":"boolean"}}}}}}},"summary":"Delete a task","operationId":"Delete a task","description":"Deletes a task from the project. Requires *Manage tasks* admin right.\n\nRequires <code>write_tasks</code> OAuth access scope.","tags":["Tasks"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"task_id","in":"path","description":"A unique task identifier.","required":true,"schema":{"type":"number"}}]}},"/projects/{project_id}:{branch}/translations":{"get":{"responses":{"200":{"description":"OK","headers":{"X-Total-Count":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"project_id":{"type":"string"},"translations":{"type":"array","items":{"$ref":"#/components/schemas/Translations"}}}}}}}},"summary":"List all translations","operationId":"List all translations","description":"Retrieves a list of project translation items, ungrouped. This endpoint supports cursor pagination for better performance with large datasets. When using cursor pagination, the response will include a <code>nextCursor</code> value in the response headers when more data is available. Continue making requests with the <code>nextCursor</code> value until no <code>nextCursor</code> is returned, indicating all data has been retrieved.\n\nYou may want to request [Keys](#resource-keys) resource in order to get the structured key/translation pairs for all languages.\n\nRequires <code>read_translations</code> OAuth access scope.","tags":["Translations"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"disable_references","in":"query","description":"Whether to disable key references. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"filter_lang_id","in":"query","description":"Return translations only for presented language ID.","required":false,"schema":{"type":"number"}},{"name":"filter_is_reviewed","in":"query","description":"Filter translations which are reviewed. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"filter_unverified","in":"query","description":"Filter translations which are unverified. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"filter_untranslated","in":"query","description":"Filter by untranslated keys. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}},{"name":"filter_qa_issues","in":"query","description":"One or more QA issues to filter by (comma separated). Possible values are <code>spelling\\_and\\_grammar</code>, <code>placeholders</code>, <code>html</code>, <code>url\\_count</code>, <code>url</code>, <code>email\\_count</code>, <code>email</code>, <code>brackets</code>, <code>numbers</code>, <code>leading\\_whitespace</code>, <code>trailing\\_whitespace</code>, <code>double\\_space</code>, <code>special\\_placeholder</code> and <code>unbalanced\\_brackets</code>.","required":false,"schema":{"type":"string"}},{"name":"filter_active_task_id","in":"query","description":"Filter translations which are part of given task ID.","required":false,"schema":{"type":"number"}},{"name":"pagination","in":"query","description":"Type of pagination. Possible values are <code>offset</code> and <code>cursor</code>. The default value is <code>offset</code>. Cursor pagination is performance-optimized and does not count total records or calculate remaining pages. When using cursor pagination, continue making requests until no <code>nextCursor</code> is returned in the response headers.","required":false,"example":"offset","schema":{"type":"string","enum":["offset","cursor"]}},{"name":"limit","in":"query","description":"Number of items to include (max 5000).","required":false,"example":"100","schema":{"type":"integer"}},{"name":"page","in":"query","description":"Return results starting from this page.","required":false,"example":"1","schema":{"type":"integer"}},{"name":"cursor","in":"query","description":"Return results starting from this cursor. When using cursor pagination, this parameter should contain the <code>nextCursor</code> value from the previous response. Continue pagination until no <code>nextCursor</code> is returned in the response headers.","required":false,"schema":{"type":"string"}}]}},"/projects/{project_id}:{branch}/translations/{translation_id}":{"get":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","translation":{"translation_id":344412,"key_id":553662,"language_iso":"en_US","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"modified_by":420,"modified_by_email":"user@mycompany.com","translation":"Hello, world!","is_unverified":true,"is_reviewed":false,"reviewed_by":0,"words":2,"custom_translation_statuses":{},"task_id":null,"segment_number":1}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"translation":{"$ref":"#/components/schemas/Translations"}}}}}}},"summary":"Retrieve a translation","operationId":"Retrieve a translation","description":"Retrieves a [Translation](#object-translations) object.\n\nRequires <code>read_translations</code> OAuth access scope.","tags":["Translations"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"translation_id","in":"path","description":"Unique translation identifier.","required":true,"schema":{"type":"number"}},{"name":"disable_references","in":"query","description":"Whether to disable key references. Possible values are <code>1</code> and <code>0</code>.","required":false,"example":"0","schema":{"type":"number","enum":["0","1"]}}]},"put":{"responses":{"200":{"description":"OK","headers":{},"content":{"application/json":{"example":{"project_id":"3002780358964f9bab5a92.87762498","translation":{"translation_id":344412,"key_id":553662,"language_iso":"en_US","modified_at":"2018-12-31 12:00:00 (Etc/UTC)","modified_at_timestamp":1546257600,"modified_by":420,"modified_by_email":"user@mycompany.com","translation":"Quick brown fox jumps over the lazy dog.","is_unverified":false,"is_reviewed":true,"reviewed_by":1357,"words":8,"custom_translation_statuses":{},"task_id":null,"segment_number":1}},"schema":{"type":"object","properties":{"project_id":{"type":"string"},"translation":{"$ref":"#/components/schemas/Translations"}}}}}}},"summary":"Update a translation","operationId":"Update a translation","description":"Updates a translation. Alternatively, use the <a href=\"/reference/bulk-update-1\">Multi-key update</a> endpoint to update translations.\n\nRequires <code>write_translations</code> OAuth access scope.","tags":["Translations"],"parameters":[{"name":"project_id","in":"path","description":"A unique project identifier","required":true,"schema":{"type":"string"}},{"name":"branch","in":"path","description":"Branch name","required":true,"schema":{"type":"string"}},{"name":"translation_id","in":"path","description":"Unique translation identifier.","required":true,"schema":{"type":"number"}}],"requestBody":{"content":{"application/json":{"example":{"translation":"Quick brown fox jumps over the lazy dog.","is_unverified":false,"is_reviewed":true},"schema":{"type":"object","required":["translation"],"properties":{"translation":{"type":"string","description":"The actual translation content. Use an JSON object for plural keys."},"is_unverified":{"type":"boolean","description":"Whether the Unverified flag is enabled."},"is_reviewed":{"type":"boolean","description":"Whether the Reviewed flag is enabled."},"custom_translation_status_ids":{"type":"array","items":{"type":"string"},"description":"Custom translation status IDs to assign to translation (existing statuses will be replaced)."}}}}}}}}},"components":{"schemas":{"Branches":{"type":"object","properties":{"branch_id":{"type":"number","description":"A unique identifier of the branch."},"name":{"type":"string","description":"Branch name."},"created_at":{"type":"string","description":"Date of branch creation."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when branch was created."},"created_by":{"type":"number","description":"An identifier of a user who has created the branch."},"created_by_email":{"type":"string","description":"An e-mail of a user who has created the branch."}}},"Comments":{"type":"object","properties":{"comment_id":{"type":"number","description":"A unique identifier of the comment."},"key_id":{"type":"number","description":"Identifier of a key, the comment is attached to."},"comment":{"type":"string","description":"The comment message."},"added_by":{"type":"number","description":"Identifier of a user, who has left the comment."},"added_by_email":{"type":"string","description":"E-mail of a user, who has left the comment."},"added_at":{"type":"string","description":"Date and time the comment was added."},"added_at_timestamp":{"type":"number","description":"Unix timestamp the comment was added."}}},"Contributors":{"type":"object","properties":{"user_id":{"type":"number","description":"A unique identifier of the user."},"email":{"type":"string","description":"E-mail associated with this user."},"fullname":{"type":"string","description":"Full name as set by the user."},"created_at":{"type":"string","description":"Date/time at which the user was created."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the user was created."},"is_admin":{"type":"boolean","description":"Whether the user has Admin access to the project."},"is_reviewer":{"type":"boolean","description":"Wheter the user has Reviewer access to the project."},"languages":{"type":"array","items":{"type":"object","properties":{"lang_id":{"type":"number","description":"Language ID."},"lang_iso":{"type":"string","description":"Language code."},"lang_name":{"type":"string","description":"Language name."},"is_writable":{"type":"boolean","description":"Whether the user has write access to the language."}}},"description":"List of languages, accessible to the user."},"admin_rights":{"type":"array","items":{},"description":"List of user permissions."},"role_id":{"type":"number","enum":[1,2,3,4,5],"description":"Permission template id attached to the contributor.","x-enumDescriptions":{"1":"Manager (manage project settings, contributors and tasks)","2":"Developer (create keys, upload and download content)","3":"Content creator (create, translate and edit keys, manage screenshots)","4":"Reviewer (translate keys, control key statuses)","5":"Translator (translate keys)"}}}},"TranslationStatuses":{"type":"object","properties":{"status_id":{"type":"number","description":"A unique custom translation status identifier."},"title":{"type":"string","description":"Status title."},"color":{"type":"string","description":"Hex color of the status."}}},"Files":{"type":"object","properties":{"file_id":{"type":"number","description":"A unique identifier of the file."},"filename":{"type":"string","description":"File name."},"key_count":{"type":"number","description":"Total number of keys, associated with this file."}}},"Keys":{"type":"object","properties":{"key_id":{"type":"number","description":"A unique identifier of the key."},"created_at":{"type":"string","description":"Creation date of the key."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the key was created."},"key_name":{"type":"object","properties":{"ios":{"type":"string","description":"\"iOS\" platform key name."},"android":{"type":"string","description":"\"Android\" platform key name."},"web":{"type":"string","description":"\"Web\" platform key name."},"other":{"type":"string","description":"\"Other\" platform key name."}},"description":"An object containing key names for all platforms. You may need to enable \"Per-platform key names\" in project settings in order to alter key names for each platform individually. Note, when creating/updating keys, depending on your project settings (Per-platform key names) you may be required to pass either a string (if the setting is disabled) or an object (if the setting is enabled)."},"filenames":{"type":"object","properties":{"ios":{"type":"string","description":"\"iOS\" platform filename."},"android":{"type":"string","description":"\"Android\" platform filename."},"web":{"type":"string","description":"\"Web\" platform filename."},"other":{"type":"string","description":"\"Other\" platform filename."}},"description":"An object containing key filename attribute for each platform."},"description":{"type":"string","description":"Description of the key."},"platforms":{"type":"array","items":{},"description":"List of platforms, enabled for this key."},"tags":{"type":"array","items":{},"description":"List of tags for this key."},"comments":{"type":"array","items":{"type":"object","properties":{"comment_id":{"type":"number","description":"Unique identifier of the comment."},"comment":{"type":"string","description":"The comment."},"added_by":{"type":"number","description":"Unique identifier of a user, who has left the comment."},"added_by_email":{"type":"string","description":"E-mail of a user, who has left the comment."},"added_at":{"type":"string","description":"Date the comment has been added."},"added_at_timestamp":{"type":"number","description":"Unix timestamp when the comment has been added."}}},"description":"Comments for this key."},"screenshots":{"type":"array","items":{"type":"object","properties":{"screenshot_id":{"type":"number","description":"A unique identifier of the screenshot."},"key_ids":{"type":"array","items":{},"description":"List of key identifiers, the screenshot is attached to."},"url":{"type":"string","description":"Link to the screenshot."},"title":{"type":"string","description":"Screenshot title."},"description":{"type":"string","description":"Description of the screenshot."},"screenshot_tags":{"type":"array","items":{},"description":"List of screenshot tags."},"width":{"type":"number","description":"Width of the screenshot, in pixels."},"height":{"type":"number","description":"Height of the screenshot, in pixels."},"created_at":{"type":"string","description":"Creation date of the screenshot."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the screenshot was created."}}},"description":"Screenshots, attached to this key."},"translations":{"type":"array","items":{"type":"object","properties":{"translation_id":{"type":"number","description":"Unique identifier of translation entry."},"key_id":{"type":"number","description":"A unique identifier of the key."},"language_iso":{"type":"string","description":"Unique code of the language of the translation."},"translation":{"type":"string","description":"The actual translation. Pass as an object, in case it includes plural forms and <code>is_plural</code> is <code>true</code>."},"modified_by":{"type":"number","description":"Identifier of a user, who has updated the translation."},"modified_by_email":{"type":"string","description":"E-mail of a user, who has updated the translation."},"modified_at":{"type":"string","description":"Date of last modification of the translation."},"modified_at_timestamp":{"type":"number","description":"Unix timestamp of last modification of the translation."},"is_reviewed":{"type":"boolean","description":"Whether the translation is marked as Reviewed."},"is_unverified":{"type":"boolean","description":"Whether the translation is marked as Unverified."},"reviewed_by":{"type":"number","description":"Identifier of the user, who has reviewed the translation (if reviewed)."},"words":{"type":"number","description":"Number of words in the translation."},"custom_translation_statuses":{"type":"array","items":{},"description":"Array consisting of <a href=\"#object-translation-statuses\">Custom Translation Status</a> objects."},"task_id":{"type":"number","description":"Identifier of the task, if the key is a part of one, or <code>null</code> if it's not."}}},"description":"Translations for all languages."},"is_plural":{"type":"boolean","description":"Whether this key is plural."},"plural_name":{"type":"string","description":"Optional custom plural name (used in some formats)."},"is_hidden":{"type":"boolean","description":"Whether this key is hidden from non-admins (translators)."},"is_archived":{"type":"boolean","description":"Whether this key is archived."},"context":{"type":"string","description":"Optional context of the key (used with some file formats)."},"base_words":{"type":"number","description":"Number of words in base language."},"char_limit":{"type":"number","description":"Maximum allowed number of characters in translations for this key."},"custom_attributes":{"type":"array","items":{},"description":"JSON containing <a href=\"https://docs.lokalise.com/developer-docs/custom-key-attributes\">custom attributes</a> (if any)."},"modified_at":{"type":"string","description":"Date of the latest key update (including screenshots and comments)."},"modified_at_timestamp":{"type":"number","description":"Unix timestamp of the latest key update (including screenshots and comments)."},"translations_modified_at":{"type":"string","description":"Date of the latest key translation update."},"translations_modified_at_timestamp":{"type":"number","description":"Unix timestamp of the latest key translation update."}}},"Languages":{"type":"object","properties":{"lang_id":{"type":"number","description":"A unique language identifier in the system."},"lang_iso":{"type":"string","description":"Language/locale code."},"lang_name":{"type":"string","description":"Language name."},"is_rtl":{"type":"boolean","description":"Whether the language is Right-To-Left."},"plural_forms":{"type":"array","items":{},"description":"List of supported plural forms."},"cc_iso":{"type":"string","description":"Country code, associated with the language."}}},"Orders":{"type":"object","properties":{"order_id":{"type":"string","description":"A unique order identifier."},"project_id":{"type":"string","description":"Project identifier."},"branch":{"type":"string","description":"Branch name."},"payment_method":{"type":"string","description":"Payment method. Possible values are <code>credit_card</code>, <code>team_credit</code>, <code>none</code>. <code>null</code> will be returned for orders made before the attribute was introduced."},"card_id":{"type":"number","description":"Identifier of the card used for payment."},"status":{"type":"string","description":"Status of the order. Possible values are <code>in progress</code>, <code>completed</code>. <code>processing</code>, <code>draft</code> in case if <code>dry_run</code> = <code>true</code>."},"created_at":{"type":"string","description":"Date and time of the order creation."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the order was created."},"created_by":{"type":"number","description":"Identifier of a user, who has created the order."},"created_by_email":{"type":"string","description":"E-mail of a user, who has created the order."},"source_language_iso":{"type":"string","description":"Source language code of the order."},"target_language_isos":{"type":"array","items":{},"description":"List of target languages."},"keys":{"type":"array","items":{},"description":"List of keys identifiers, included in the order."},"source_words":{"type":"object","properties":{"{key}":{"type":"string","description":"Language iso code."},"{value}":{"type":"number","description":"Translatable word count."}},"description":"Object, where object key is target language iso code and value is the translatable word count."},"provider_slug":{"type":"string","description":"Translation provider slug."},"translation_style":{"type":"string","description":"Style of the translation, applies to <code>gengo</code> provider only."},"translation_tier":{"type":"number","description":"Tier of the translation. Tiers depend on provider."},"translation_tier_name":{"type":"string","description":"Tier name."},"briefing":{"type":"string","description":"Order briefing."},"is_saved_to_translation_memory":{"type":"boolean","description":"Default true, can be set only with <code>google</code> and <code>deepl</code> providers."},"total":{"type":"number","description":"Total cost of the order in major currency units (USD)"}}},"PaymentCards":{"type":"object","properties":{"card_id":{"type":"number","description":"A unique identifier of the card."},"last4":{"type":"string","description":"Last 4 digits of the card."},"brand":{"type":"string","description":"Card brand."},"created_at":{"type":"string","description":"Date/time at which the card was created."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the card was created."}}},"Projects":{"type":"object","properties":{"project_id":{"type":"string","description":"A unique project identifier."},"project_type":{"type":"string","description":"Project type descriptor. Allowed values are <code>localization_files</code> or <code>paged_documents</code>."},"name":{"type":"string","description":"Project name."},"description":{"type":"string","description":"Description of the project."},"created_at":{"type":"string","description":"Date of project creation."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when project was created."},"created_by":{"type":"number","description":"An identifier of a user who has created the project."},"created_by_email":{"type":"string","description":"An e-mail of a user who has created the project."},"team_id":{"type":"number","description":"A unique identifier of the team, the project belongs to."},"base_language_id":{"type":"number","description":"A unique identifier of the project default language."},"base_language_iso":{"type":"string","description":"A language/locale code of the project default language."},"settings":{"type":"object","properties":{"per_platform_key_names":{"type":"boolean","description":"If enabled project has different key names for different platforms."},"reviewing":{"type":"boolean","description":"If enabled contributors has reviewer access for project."},"auto_toggle_unverified":{"type":"boolean","description":"If enabled Lokalise will automatically mark translations Unverified in case translation of base language was changed."},"offline_translation":{"type":"boolean","description":"If enabled translators are able to download and upload translations as XLIFF files from the Editor."},"key_editing":{"type":"boolean","description":"If enabled keys are allowed to be modified."},"inline_machine_translations":{"type":"boolean","description":"If enabled inline machine translations are enabled to all project users."},"branching":{"type":"boolean","description":"If enabled then branching will be available."},"segmentation":{"type":"boolean","description":"If enabled then segmentation will be available."},"custom_translation_statuses":{"type":"boolean","description":"If enabled then custom translation statuses will be available."},"custom_translation_statuses_allow_multiple":{"type":"boolean","description":"If enabled then multiple custom translation statuses will be allowed."},"contributor_preview_download_enabled":{"type":"boolean","description":"If enabled then translators will be allowed to preview content by downloading target files from the Editor"}},"description":"An object containing project settings."},"statistics":{"type":"object","properties":{"progress_total":{"type":"number","description":"Overall percent of project progress."},"keys_total":{"type":"number","description":"Count of keys in the project."},"team":{"type":"number","description":"Team members count in the project."},"base_words":{"type":"number","description":"Count of words in a base language of the project."},"qa_issues_total":{"type":"number","description":"Overall count of QA issues in the project."},"qa_issues":{"type":"object","properties":{"not_reviewed":{"type":"number","description":"Count of not reviewed translations."},"unverified":{"type":"number","description":"Count of unverified translations."},"spelling_grammar":{"type":"number","description":"Count of translations with spelling and/or grammar errors."},"inconsistent_placeholders":{"type":"number","description":"Count of translations with inconsistent placeholders (source vs target)."},"inconsistent_html":{"type":"number","description":"Count of translations with inconsistent HTML tags (source vs target)."},"different_number_of_urls":{"type":"number","description":"Count of translations with different number of URLs (source vs target)."},"different_urls":{"type":"number","description":"Count of translations with different URLs (source vs target)."},"leading_whitespace":{"type":"number","description":"Count of translations with leading whitespace."},"trailing_whitespace":{"type":"number","description":"Count of translations with trailing whitespace."},"different_number_of_email_address":{"type":"number","description":"Count of translations with different number of email address (source vs target)."},"different_email_address":{"type":"number","description":"Count of translations with different email address (source vs target)."},"different_brackets":{"type":"number","description":"Count of translations with different brackets (source vs target)."},"different_numbers":{"type":"number","description":"Count of translations with different numbers (source vs target)."},"double_space":{"type":"number","description":"Count of translations with double spaces (target)."},"special_placeholder":{"type":"number","description":"Count of invalid use of [VOID], [TRUE], [FALSE] placeholders (target)."},"unbalanced_brackets":{"type":"number","description":"Count of unbalanced brackets (target)."}},"description":"An object containing count for each QA issue type."},"languages":{"type":"array","items":{"type":"object","properties":{"language_id":{"type":"number","description":"A unique language identifier in the system."},"language_iso":{"type":"string","description":"Language/locale code."},"progress":{"type":"number","description":"Translated keys percent."},"words_to_do":{"type":"number","description":"Count of words remaining to translate from projects base language."}}},"description":"An array of project languages with progress percent."}},"description":"An object containing project statistics, QA issues and project languages progress."}}},"QueuedProcesses":{"type":"object","properties":{"process_id":{"type":"string","description":"A unique process identifier."},"type":{"type":"string","description":"The type of the process. Can be <code>file-import</code>, <code>sketch-import</code> or <code>bulk-apply-tm</code>."},"status":{"type":"string","description":"Current status of the process. Can be <code>queued</code>, <code>pre_processing</code>, <code>running</code>, <code>post_processing</code>, <code>cancelled</code>, <code>finished</code> or <code>failed</code>."},"message":{"type":"string","description":"Can contain a message related to the current process status (such as an error message)."},"created_by":{"type":"number","description":"ID of a user who initiated the process."},"created_by_email":{"type":"string","description":"email of a user who initiated the process."},"created_at":{"type":"string","description":"Date of when the process was created in the queue."},"created_at_timestamp":{"type":"number","description":"Unix timestamp of when the process was created in the queue."}}},"Screenshots":{"type":"object","properties":{"screenshot_id":{"type":"number","description":"A unique identifier of the screenshot."},"key_ids":{"type":"array","items":{},"description":"List of key identifiers, the screenshot is attached to."},"keys":{"type":"array","items":{"type":"object","properties":{"key_id":{"type":"number","description":"A unique identifier of the key."},"coordinates":{"type":"object","properties":{"left":{"type":"number","description":"<code>x</code> position of the left-top corner"},"top":{"type":"number","description":"<code>y</code> position of the left-top corner"},"width":{"type":"number","description":"width (pixels) of the area"},"height":{"type":"number","description":"height (pixels) of the area"}},"description":"Key coordinates of the key area"}}},"description":"List of key keys with coordinates."},"url":{"type":"string","description":"Link to the screenshot."},"title":{"type":"string","description":"Screenshot title."},"description":{"type":"string","description":"Description of the screenshot."},"screenshot_tags":{"type":"array","items":{},"description":"List of screenshot tags."},"width":{"type":"number","description":"Width of the screenshot, in pixels."},"height":{"type":"number","description":"Height of the screenshot, in pixels."},"created_at":{"type":"string","description":"Creation date of the screenshot."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the screenshot was created."}}},"Segments":{"type":"object","properties":{"segment_number":{"type":"number","description":"Segment number."},"language_iso":{"type":"string","description":"Language code."},"modified_at":{"type":"string","description":"Date and time of last translation modification."},"modified_at_timestamp":{"type":"number","description":"Unix timestamp of last translation modification."},"modified_by":{"type":"number","description":"Identifier of the user, who made last modification."},"modified_by_email":{"type":"string","description":"E-mail of the user, who made last modification."},"value":{"type":"string","description":"The actual segment content. Pass as an object, in case it includes plural forms and <code>is_plural</code> is <code>true</code>."},"is_fuzzy":{"type":"boolean","description":"Whether the Fuzzy flag is enabled. (Note: Fuzzy is called Unverified in the editor now)."},"is_reviewed":{"type":"boolean","description":"Whether the Reviewed flag is enabled."},"reviewed_by":{"type":"number","description":"Identifier of the user, who has reviewed the translation (if reviewed)."},"words":{"type":"number","description":"Number of words in the translation."},"custom_translation_statuses":{"type":"array","items":{},"description":"Array consisting of <a href=\"#object-translation-statuses\">Custom Translation Status</a> objects."}}},"Snapshots":{"type":"object","properties":{"snapshot_id":{"type":"number","description":"A unique identifier of the snapshot."},"title":{"type":"string","description":"Snapshot title."},"created_at":{"type":"string","description":"Date and time of the snapshot creation."},"created_at_timestamp":{"type":"string","description":"Unix timestamp when the snapshot was created."},"created_by":{"type":"number","description":"Identifier of a user, who has created the snapshot."},"created_by_email":{"type":"string","description":"E-mail of a user, who has created the snapshot."}}},"Tasks":{"type":"object","properties":{"task_id":{"type":"number","description":"A unique task identifier."},"title":{"type":"string","description":"Task title."},"description":{"type":"string","description":"Short description of the task."},"status":{"type":"string","description":"Status of the task. Allowed values are <code>completed</code>, <code>in_progress</code>, <code>created</code>, <code>queued</code>."},"progress":{"type":"number","description":"Task progress in percents (0% - 100%)."},"due_date":{"type":"string","description":"Due date."},"due_date_timestamp":{"type":"number","description":"Unix timestamp of the Due date."},"keys_count":{"type":"number","description":"Total number of keys in the task."},"words_count":{"type":"number","description":"Total number of source words in the task."},"created_at":{"type":"string","description":"Date and time of the task creation."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the task was created."},"created_by":{"type":"number","description":"Identifier of a user, who has created the task."},"created_by_email":{"type":"string","description":"E-mail of a user, who has created the task."},"can_be_parent":{"type":"boolean","description":"Can task be assigned as a parent task."},"task_type":{"type":"string","default":"translation","enum":["translation","automatic_translation","lqa_by_ai","review"],"description":"<code>translation</code>, <code>automatic_translation</code>, <code>lqa_by_ai</code> or <code>review</code>."},"parent_task_id":{"type":"number","description":"ID of the parent task."},"closing_tags":{"type":"array","items":{},"description":"Tags that will be added to affected keys when task is closed."},"do_lock_translations":{"type":"boolean","description":"If set to true, will lock translations for non-assigned project members."},"languages":{"type":"array","items":{"type":"object","properties":{"language_iso":{"type":"string","description":"Language code."},"language_id":{"type":"number","description":"A unique language identifier in the system."},"language_name":{"type":"string","description":"Language name."},"users":{"type":"array","items":{},"description":"List of users, assigned to work on the language."},"groups":{"type":"object","properties":{"group":{"type":"object","properties":{"id":{"type":"number","description":"A unique identifier of the user group."},"name":{"type":"string","description":"Name of the group."}}}},"description":"List of groups, assigned to work on the language."},"keys":{"type":"array","items":{},"description":"List of keys identifiers, included in task for this language."},"status":{"type":"string","description":"Status of the language in the task. Allowed values are <code>completed</code>, <code>in progress</code>, <code>created</code>."},"progress":{"type":"number","description":"Language progress in percents (0% - 100%)."},"initial_tm_leverage":{"type":"object","deprecated":true,"description":"Deprecated. We return data for compatibility, but please, rely on \"tm_leverage\" instead.","properties":{"0%+":{"type":"number","description":"Number of words with TM match from 0% to 60%."},"60%+":{"type":"number","description":"Number of words with TM match from 60% to 75%."},"75%+":{"type":"number","description":"Number of words with TM match from 75% to 95%."},"95%+":{"type":"number","description":"Number of words with TM match from 95% to 100%."},"100%":{"type":"number","description":"Number of words with TM 100% match."}}},"tm_leverage":{"type":"object","description":"Translation Memory leverage calculated for a task. It indicates how many words translators can fetch from the memory instead of translating everything from scratch. For large tasks it may take time to calculate TM leverage after the task creation. If the \"status\" is \"pending\", you will see null value and need to retrieve the data again (with a small delay).","example":{"status":"completed","value":{"0%+":30,"50%+":0,"75%+":0,"85%+":0,"95%+":0,"100%":0}},"properties":{"status":{"type":"string","enum":["pending","completed"],"description":"Status of the translation memory leverage."},"value":{"type":"object","nullable":true,"properties":{"0%+":{"type":"number","description":"Number of words with TM match from 0% to 50%."},"50%+":{"type":"number","description":"Number of words with TM match from 50% to 75%."},"75%+":{"type":"number","description":"Number of words with TM match from 75% to 85%."},"85%+":{"type":"number","description":"Number of words with TM match from 85% to 95%."},"95%+":{"type":"number","description":"Number of words with TM match from 95% to 100%."},"100%":{"type":"number","description":"Number of words with TM 100% match."}}}}},"keys_count":{"type":"number","description":"Number of keys for the language."},"words_count":{"type":"number","description":"Number of source words for the language."},"done_words_count":{"type":"number","description":"Number of translated words for the language."},"completed_at":{"type":"string","description":"Date and time of the language completion."},"completed_at_timestamp":{"type":"number","description":"Unix timestamp when the language was completed."},"completed_by":{"type":"number","description":"Identifier of a user, who has completed the language."},"completed_by_email":{"type":"string","description":"E-mail of a user, who has completed the language."}}},"description":"List of languages in the task."},"source_language_iso":{"type":"string","description":"Source language code of the task."},"auto_close_languages":{"type":"boolean","description":"Whether languages should be closed automatically upon completion of the last item."},"auto_close_task":{"type":"boolean","description":"Whether the task should be automatically closed upon all language completion."},"auto_close_items":{"type":"boolean","description":"Whether the <code>translation</code> task items should be automatically marked as completed on edit."},"completed_at":{"type":"string","description":"Date and time of the task completion."},"completed_at_timestamp":{"type":"number","description":"Unix timestamp when the task was completed."},"completed_by":{"type":"number","description":"Identifier of a user, who has completed the task."},"completed_by_email":{"type":"string","description":"E-mail of a user, who has completed the task."},"custom_translation_status_ids":{"type":"array","items":{},"description":"IDs of custom translation statuses that will be applied to task items after item is completed."}}},"TeamUserGroups":{"type":"object","properties":{"group_id":{"type":"number","description":"A unique identifier of the group."},"name":{"type":"string","description":"Name of the group."},"permissions":{"type":"object","properties":{"is_admin":{"type":"boolean","description":"Whether the user has Admin access to the project."},"is_reviewer":{"type":"boolean","description":"Whether the user has Reviewer access to the project."},"admin_rights":{"type":"array","items":{},"description":"List of group administrative permissions."},"languages":{"type":"array","items":{"type":"object","properties":{"lang_id":{"type":"number","description":"Language ID."},"lang_iso":{"type":"string","description":"Language code."},"lang_name":{"type":"string","description":"Language name."},"is_writable":{"type":"boolean","description":"Whether the user has write access to the language."}}},"description":"List of languages, accessible to the user."}},"description":"List of group permissions."},"created_at":{"type":"string","description":"Date/time at which the group was created."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the group was created."},"team_id":{"type":"number","description":"Team identifier."},"projects":{"type":"array","items":{},"description":"List of projects, group is added to."},"members":{"type":"array","items":{},"description":"List of group members (user IDs)."},"role_id":{"type":"number","enum":[1,2,3,4,5],"description":"Permission template id attached to the group.","x-enumDescriptions":{"1":"Manager (manage project settings, contributors and tasks)","2":"Developer (create keys, upload and download content)","3":"Content creator (create, translate and edit keys, manage screenshots)","4":"Reviewer (translate keys, control key statuses)","5":"Translator (translate keys)"}}}},"TeamUserBillingDetails":{"type":"object","required":["billing_email","country_code","zip"],"properties":{"billing_email":{"type":"string","description":"Email for invoices and translation orders"},"country_code":{"type":"string","description":"Country code as described in ISO 3166 (alpha-2 code)"},"zip":{"type":"string","description":"Valid postal code for specified country"},"state_code":{"type":"string","description":"<code>Required</code> if country code is <code>US</code>"},"address1":{"type":"string","description":"Address line 1"},"address2":{"type":"string","description":"Address line 2"},"city":{"type":"string","description":"City"},"phone":{"type":"string","description":"Phone"},"company":{"type":"string","description":"Company name"},"vatnumber":{"type":"string","description":"VAT number"}}},"TeamUsers":{"type":"object","properties":{"user_id":{"type":"number","description":"A unique identifier of the user."},"email":{"type":"string","description":"E-mail of the user."},"fullname":{"type":"string","description":"User name and last name."},"created_at":{"type":"string","description":"Date/time at which the user was created."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the user was created."},"role":{"type":"string","description":"Role of the user. Available roles are <code>owner</code>, <code>admin</code>, <code>member</code>, <code>biller</code>."}}},"Teams":{"type":"object","properties":{"team_id":{"type":"number","description":"A unique team identifier."},"name":{"type":"string","description":"Team name."},"created_at":{"type":"string","description":"Date and time when team was created."},"created_at_timestamp":{"type":"number","description":"Unix timestamp when the team was created."},"plan":{"type":"string","description":"Current subscription plan of the team."},"quota_usage":{"type":"object","properties":{"users":{"type":"number","description":"Number of users in the team."},"keys":{"type":"number","description":"Number of keys used across all team projects."},"projects":{"type":"number","description":"Number of projects in the team."},"mau":{"deprecated":true,"type":"number","description":"Number of monthly active users (for Lokalise SDK)."},"trafficBytes":{"type":"number","description":"Number of bytes used in Lokalise OTA"},"ai_words":{"type":"number","description":"Number of Lokalise AI words already consumed by the team."}},"description":"Current quota usage."},"quota_allowed":{"type":"object","properties":{"users":{"type":"number","description":"Total number of users allocated to the team."},"keys":{"type":"number","description":"Total number of keys allocated across all team projects."},"projects":{"type":"number","description":"Total number of projects allocated to the team."},"mau":{"deprecated":true,"type":"number","description":"Total number of monthly active users allocated to the team (for Lokalise SDK)."},"trafficBytes":{"type":"number","description":"Number of bytes allowed in Lokalise OTA"},"ai_words":{"type":"number","description":"Total number of Lokalise AI words allocated to the team."}},"description":"Quotas allocated to the team."}}},"TranslationProviders":{"type":"object","properties":{"provider_id":{"type":"number","description":"A unique identifier of the provider."},"name":{"type":"number","description":"Name of the provider."},"slug":{"type":"string","description":"Slug of the provider."},"price_pair_min":{"type":"number","description":"Minimum total price per language pair. It's \"0.00\" if there is no minimum requirement."},"website_url":{"type":"string","description":"Provider website."},"description":{"type":"string","description":"Provider description."},"tiers":{"type":"object","properties":{"tier_id":{"type":"number","description":"An identifier of the tier."},"name":{"type":"string","description":"Name of the tier."}},"description":"Available translation tiers."},"pairs":{"type":"object","properties":{"tier_id":{"type":"number","description":"Translation tier."},"from_lang_iso":{"type":"string","description":"Source language identifier."},"from_lang_name":{"type":"string","description":"Source language name."},"to_lang_iso":{"type":"string","description":"Target language identifier."},"to_lang_name":{"type":"string","description":"Target language name."},"price_per_word":{"type":"number","description":"Price per word in USD."}},"description":"List of language pairs and prices."}}},"Translations":{"type":"object","properties":{"translation_id":{"type":"number","description":"Unique translation identifier."},"key_id":{"type":"number","description":"Identifier of the key of the translation."},"language_iso":{"type":"string","description":"Language code."},"modified_at":{"type":"string","description":"Date and time of last translation modification."},"modified_at_timestamp":{"type":"number","description":"Unix timestamp of last translation modification."},"modified_by":{"type":"number","description":"Identifier of the user, who made last modification."},"modified_by_email":{"type":"string","description":"E-mail of the user, who made last modification."},"translation":{"type":"string","description":"The actual translation content. Pass as an object, in case it includes plural forms and <code>is_plural</code> is <code>true</code>."},"is_unverified":{"type":"boolean","description":"Whether the Unverified flag is enabled."},"is_reviewed":{"type":"boolean","description":"Whether the Reviewed flag is enabled."},"reviewed_by":{"type":"number","description":"Identifier of the user, who has reviewed the translation (if reviewed)."},"words":{"type":"number","description":"Number of words in the translation."},"custom_translation_statuses":{"type":"array","items":{},"description":"Array consisting of <a href=\"#object-translation-statuses\">Custom Translation Status</a> objects."},"task_id":{"type":"number","description":"Identifier of the task, if the key is a part of one, or <code>null</code> if it's not."},"segment_number":{"type":"number","description":"If segmentation is used then this is a segment number. If not then it defaults to 1."}}}},"securitySchemes":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"X-Api-Token"}}},"security":[{"ApiKeyAuth":[]}],"tags":[]}