{
  "openapi": "3.0.3",
  "info": {
    "title": "Phrase Strings API Reference",
    "version": "2.0.0",
    "description": "Phrase Strings is a translation management platform for software projects. You can collaborate on language file translation with your team or order translations through our platform. The API allows you to import locale files, download locale files, tag keys or interact in other ways with the localization data stored in Phrase Strings for your account.",
    "contact": {
      "name": "Phrase Support",
      "url": "https://developers.phrase.com/api/",
      "email": "support@phrase.com"
    },
    "x-logo": {
      "url": "https://developers.phrase.com/images/phrase-logo.svg",
      "backgroundColor": "#03eab3",
      "altText": "Phrase Strings"
    },
    "termsOfService": "https://phrase.com/terms/",
    "license": {
      "name": "MIT",
      "url": "https://choosealicense.com/licenses/mit/"
    }
  },
  "servers": [
    {
      "url": "https://api.phrase.com/v2",
      "description": "EU production server"
    },
    {
      "url": "https://api.us.app.phrase.com/v2",
      "description": "US production server"
    }
  ],
  "security": [
    {
      "Token": []
    },
    {
      "Basic": []
    }
  ],
  "tags": [
    {
      "name": "Accounts"
    },
    {
      "name": "Authorizations",
      "description": "The endpoints provided by the Authorizations API are **only accessible via Basic authentication with email and password**.\n\nWhen creating a new authorization, the new access token for this authorization will be returned in the immediate response but not later, due to security reasons. When accessing authorizations later, you will only see the last eight chars of the token in plain text (`token_last_eight`) and the SHA256 digest of the token for reference (`hashed_token`).\n\nFor instructions on how authorization in general works, see our [Auth Guide](#overview--authentication).\n\n### Scopes\n\nWhen creating or updating an OAuth authorization, you can define a list of scopes to limit the access that can be performed by that authorization.\n\n#### Available Scopes\n\n<div class=\"table-responsive\">\n  <table class=\"basic-table\">\n    <thead>\n      <tr class=\"basic-table__row basic-table__row--header\">\n        <th class=\"basic-table__cell basic-table__cell--header\">Scope</th>\n        <th class=\"basic-table__cell basic-table__cell--header\">Description</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td class=\"basic-table__cell\"><code>read</code></td>\n        <td class=\"basic-table__cell\">Read projects, locales, keys, translations, orders</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>write</code></td>\n        <td class=\"basic-table__cell\">Write projects, locales, keys, translations but not orders</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>orders.create</code></td>\n        <td class=\"basic-table__cell\">Create and confirm orders</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>team.manage</code></td>\n        <td class=\"basic-table__cell\">Manage invitations and members</td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n"
    },
    {
      "name": "Automation Events"
    },
    {
      "name": "Blacklisted Keys"
    },
    {
      "name": "Branches",
      "description": "### Branch creation\n\nBranches will be created asynchronously. State of branch creation is returned as state.\n\n#### Available States\n\n<div class=\"table-responsive\">\n  <table class=\"basic-table\">\n    <thead>\n      <tr class=\"basic-table__row basic-table__row--header\">\n        <th class=\"basic-table__cell basic-table__cell--header\">State</th>\n        <th class=\"basic-table__cell basic-table__cell--header\">Description</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td class=\"basic-table__cell\"><code>initialized</code></td>\n        <td class=\"basic-table__cell\">Data received.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>processing</code></td>\n        <td class=\"basic-table__cell\">Branch is currently creating.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>success</code></td>\n        <td class=\"basic-table__cell\">Branch was created successfully</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>error</code></td>\n        <td class=\"basic-table__cell\">Branch creation failed.</td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n"
    },
    {
      "name": "Checks",
      "description": "**Note:** The Checks API is still in development and might change in subsequent releases.\n\nThe Checks API lets you list the check issues detected in a project and dismiss issues that should no longer appear on the list of active check issues.\n\n#### Available States\n\n<div class=\"table-responsive\">\n  <table class=\"basic-table\">\n    <thead>\n      <tr class=\"basic-table__row basic-table__row--header\">\n        <th class=\"basic-table__cell basic-table__cell--header\">State</th>\n        <th class=\"basic-table__cell basic-table__cell--header\">Description</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td class=\"basic-table__cell\"><code>active</code></td>\n        <td class=\"basic-table__cell\">The issue is unresolved and not dismissed.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>solved</code></td>\n        <td class=\"basic-table__cell\">The issue has been resolved.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>dismissed</code></td>\n        <td class=\"basic-table__cell\">The issue has been dismissed by a user.</td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n"
    },
    {
      "name": "Comments"
    },
    {
      "name": "Comment Reactions"
    },
    {
      "name": "Comment Replies"
    },
    {
      "name": "Custom Metadata"
    },
    {
      "name": "Distributions"
    },
    {
      "name": "Documents"
    },
    {
      "name": "Figma Attachments"
    },
    {
      "name": "Formats"
    },
    {
      "name": "Glossaries"
    },
    {
      "name": "Glossary Terms"
    },
    {
      "name": "Glossary Term Translations"
    },
    {
      "name": "ICU"
    },
    {
      "name": "Invitations",
      "description": "With the invitation endpoint you can [manage and invite users](https://support.phrase.com/hc/en-us/articles/5709742418716) to Phrase Strings via API. A user can have the role Manager, Developer or Translator each with its own access rights. Developers and translators need resources like projects and locales assigned in order to access them.\n"
    },
    {
      "name": "Job Annotations",
      "description": "The job annotations endpoints allow you to create, update and delete annotations for jobs and job locales. Annotations are used to add metadata to a job or job locale.\n"
    },
    {
      "name": "Job Comments"
    },
    {
      "name": "Job Locales"
    },
    {
      "name": "Job Template Locales"
    },
    {
      "name": "Job Templates"
    },
    {
      "name": "Jobs"
    },
    {
      "name": "Key Format Annotations"
    },
    {
      "name": "Keys"
    },
    {
      "name": "Linked Keys"
    },
    {
      "name": "Locales"
    },
    {
      "name": "Locale Downloads"
    },
    {
      "name": "Machine Translation"
    },
    {
      "name": "Members",
      "description": "With the members endpoints you can do basic [team and user management](https://support.phrase.com/hc/en-us/articles/5709742418716) via API. A user can have the role Manager, Developer or Translator each with its own access rights. Developers and translators need resources like projects and locales assigned in order to access them.\n"
    },
    {
      "name": "Notifications"
    },
    {
      "name": "Notification Groups"
    },
    {
      "name": "Orders",
      "description": "### List of categories [TextMaster]\n\nWhen ordering translations from TextMaster, you need to specify a category ID along with your order. See this list for information on the category ID and their equivalent description.\n\n<div class=\"table-responsive\">\n  <table class=\"basic-table\">\n    <thead>\n      <tr class=\"basic-table__row basic-table__row--header\">\n        <th class=\"basic-table__cell basic-table__cell--header\">Category ID</th>\n        <th class=\"basic-table__cell basic-table__cell--header\">Description</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr><td class=\"basic-table__cell\">C001</td><td class=\"basic-table__cell\">Agriculture</td></tr>\n      <tr><td class=\"basic-table__cell\">C002</td><td class=\"basic-table__cell\">Aerospace</td></tr>\n      <tr><td class=\"basic-table__cell\">C003</td><td class=\"basic-table__cell\">Animals/Pets/Plants</td></tr>\n      <tr><td class=\"basic-table__cell\">C004</td><td class=\"basic-table__cell\">Arts/Culture/Literature</td></tr>\n      <tr><td class=\"basic-table__cell\">C005</td><td class=\"basic-table__cell\">Automotive/Transportation</td></tr>\n      <tr><td class=\"basic-table__cell\">C006</td><td class=\"basic-table__cell\">Computers/Technology/Software</td></tr>\n      <tr><td class=\"basic-table__cell\">C007</td><td class=\"basic-table__cell\">Telecom</td></tr>\n      <tr><td class=\"basic-table__cell\">C008</td><td class=\"basic-table__cell\">Real Estate/Construction/Building</td></tr>\n      <tr><td class=\"basic-table__cell\">C009</td><td class=\"basic-table__cell\">Consumer Goods</td></tr>\n      <tr><td class=\"basic-table__cell\">C010</td><td class=\"basic-table__cell\">Education</td></tr>\n      <tr><td class=\"basic-table__cell\">C011</td><td class=\"basic-table__cell\">Entertainment</td></tr>\n      <tr><td class=\"basic-table__cell\">C012</td><td class=\"basic-table__cell\">Ecology/Environment</td></tr>\n      <tr><td class=\"basic-table__cell\">C013</td><td class=\"basic-table__cell\">Health/Biotechnology/Pharma</td></tr>\n      <tr><td class=\"basic-table__cell\">C014</td><td class=\"basic-table__cell\">Internet</td></tr>\n      <tr><td class=\"basic-table__cell\">C015</td><td class=\"basic-table__cell\">Policy/Government/Public</td></tr>\n      <tr><td class=\"basic-table__cell\">C016</td><td class=\"basic-table__cell\">Publishing/Media/Communication</td></tr>\n      <tr><td class=\"basic-table__cell\">C017</td><td class=\"basic-table__cell\">Religion</td></tr>\n      <tr><td class=\"basic-table__cell\">C018</td><td class=\"basic-table__cell\">Food/Beverages</td></tr>\n      <tr><td class=\"basic-table__cell\">C019</td><td class=\"basic-table__cell\">Retail</td></tr>\n      <tr><td class=\"basic-table__cell\">C020</td><td class=\"basic-table__cell\">Fashion/Luxury/Textiles</td></tr>\n      <tr><td class=\"basic-table__cell\">C021</td><td class=\"basic-table__cell\">Travel/Tourism</td></tr>\n      <tr><td class=\"basic-table__cell\">C022</td><td class=\"basic-table__cell\">Natural Resources/Energy</td></tr>\n      <tr><td class=\"basic-table__cell\">C023</td><td class=\"basic-table__cell\">Banking/Financial Services/Insurance</td></tr>\n      <tr><td class=\"basic-table__cell\">C024</td><td class=\"basic-table__cell\">Legal Affairs/Tax/Law</td></tr>\n      <tr><td class=\"basic-table__cell\">C025</td><td class=\"basic-table__cell\">Raw Materials/Industrial Goods</td></tr>\n      <tr><td class=\"basic-table__cell\">C026</td><td class=\"basic-table__cell\">Lifestyle/Leisure/Hobbies</td></tr>\n      <tr><td class=\"basic-table__cell\">C027</td><td class=\"basic-table__cell\">Sports</td></tr>\n      <tr><td class=\"basic-table__cell\">C028</td><td class=\"basic-table__cell\">Home/Family/Friends/Children</td></tr>\n      <tr><td class=\"basic-table__cell\">C029</td><td class=\"basic-table__cell\">Economy/Financial Markets</td></tr>\n      <tr><td class=\"basic-table__cell\">C030</td><td class=\"basic-table__cell\">Science</td></tr>\n      <tr><td class=\"basic-table__cell\">C031</td><td class=\"basic-table__cell\">Human Resources/Employment</td></tr>\n      <tr><td class=\"basic-table__cell\">C032</td><td class=\"basic-table__cell\">Adult (Pornography, Violence, etc.)</td></tr>\n    </tbody>\n  </table>\n</div>\n"
    },
    {
      "name": "Organization Job Template Locales"
    },
    {
      "name": "Organization Job Templates"
    },
    {
      "name": "Pre Translations"
    },
    {
      "name": "Projects"
    },
    {
      "name": "Quality"
    },
    {
      "name": "Releases"
    },
    {
      "name": "Release Triggers"
    },
    {
      "name": "Repo Syncs",
      "description": "The Repo Syncs API allows you to synchronize your Phrase projects with your code repositories.\nYou can import translations from your repository to Phrase and export translations from Phrase to your repository.\n"
    },
    {
      "name": "Repo Sync Events"
    },
    {
      "name": "Reports"
    },
    {
      "name": "Search"
    },
    {
      "name": "Screenshot Markers"
    },
    {
      "name": "Screenshots"
    },
    {
      "name": "Spaces"
    },
    {
      "name": "Style guides"
    },
    {
      "name": "Supported Languages"
    },
    {
      "name": "Tags"
    },
    {
      "name": "Teams"
    },
    {
      "name": "Translations"
    },
    {
      "name": "Uploads",
      "description": "### Formats\n\nWe support all common localization file formats. For a detailed overview, see our [Format Guide](https://support.phrase.com/hc/en-us/sections/6111343326364).\n\n### Processing\n\nUploads will be processed asynchronously and thus the data might not be imported yet although the upload is completed. Therefore we recommend to evaluate the returned <code>state</code> field for information on the import progress.\n\n#### Available States\n\n<div class=\"table-responsive\">\n  <table class=\"basic-table\">\n    <thead>\n      <tr class=\"basic-table__row basic-table__row--header\">\n        <th class=\"basic-table__cell basic-table__cell--header\">State</th>\n        <th class=\"basic-table__cell basic-table__cell--header\">Description</th>\n      </tr>\n    </thead>\n    <tbody>\n      <tr>\n        <td class=\"basic-table__cell\"><code>initialized</code></td>\n        <td class=\"basic-table__cell\">Data received.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>waiting_for_preview</code></td>\n        <td class=\"basic-table__cell\">Upload is waiting for preview to be finished.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>waiting</code></td>\n        <td class=\"basic-table__cell\">Upload is waiting for processing.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>processing</code></td>\n        <td class=\"basic-table__cell\">Upload is being processed, data is currently imported.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>success</code></td>\n        <td class=\"basic-table__cell\">Upload is complete and all data is imported.</td>\n      </tr>\n      <tr>\n        <td class=\"basic-table__cell\"><code>error</code></td>\n        <td class=\"basic-table__cell\">Upload or import process failed.</td>\n      </tr>\n    </tbody>\n  </table>\n</div>\n"
    },
    {
      "name": "Users"
    },
    {
      "name": "Variables"
    },
    {
      "name": "Versions / History"
    },
    {
      "name": "Webhooks"
    },
    {
      "name": "Webhook Deliveries"
    }
  ],
  "x-tagGroups": [
    {
      "name": "Core Resources",
      "tags": [
        "Projects",
        "Locales",
        "Keys",
        "Key Format Annotations",
        "Translations",
        "Uploads",
        "Tags",
        "Custom Metadata Properties",
        "Blacklisted Keys",
        "Versions / History"
      ]
    },
    {
      "name": "Workflows",
      "tags": [
        "Spaces",
        "Jobs",
        "Job Comments",
        "Job Locales",
        "Job Templates",
        "Job Template Locales",
        "Organization Job Templates",
        "Organization Job Template Locales",
        "Comments",
        "Comment Reactions",
        "Comment Replies",
        "Branches"
      ]
    },
    {
      "name": "Quality",
      "tags": [
        "Checks",
        "Glossaries",
        "Glossary Terms",
        "Glossary Term Translations"
      ]
    },
    {
      "name": "Integrations",
      "tags": [
        "Webhooks",
        "Distributions",
        "Releases",
        "Release Triggers"
      ]
    },
    {
      "name": "Ordering",
      "tags": [
        "Orders",
        "Style guides"
      ]
    },
    {
      "name": "User management",
      "tags": [
        "Authorizations",
        "Users",
        "Accounts",
        "Members",
        "Invitations"
      ]
    },
    {
      "name": "Screenshots",
      "tags": [
        "Screenshots",
        "Screenshot Markers"
      ]
    },
    {
      "name": "Misc",
      "tags": [
        "Formats"
      ]
    },
    {
      "name": "Figma Attachments",
      "tags": [
        "Figma attachments",
        "Key's Figma attachments"
      ]
    }
  ],
  "components": {
    "securitySchemes": {
      "Token": {
        "type": "apiKey",
        "in": "header",
        "name": "Authorization",
        "description": "Enter your token in the format `token TOKEN`"
      },
      "Basic": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "headers": {
      "Link": {
        "description": "Links to related resources, in the format defined by\n[RFC 5988](https://tools.ietf.org/html/rfc5988#section-5).\nThis will include a link with relation type `next` to the\nnext page, if there is a next page.",
        "schema": {
          "type": "string"
        }
      },
      "X-PhraseApp-OTP": {
        "description": "The number of allowed requests in the current period",
        "schema": {
          "type": "string"
        }
      },
      "X-Rate-Limit-Limit": {
        "description": "The number of allowed requests in the current period",
        "schema": {
          "type": "integer"
        }
      },
      "X-Rate-Limit-Reason": {
        "description": "Indicates why the request was rate limited. Present only on 429 responses. `global-rate` means the per-user request-rate quota was exceeded; `global-concurrency` means the concurrent-request limit was exceeded.",
        "schema": {
          "type": "string",
          "enum": [
            "global-rate",
            "global-concurrency"
          ]
        }
      },
      "X-Rate-Limit-Remaining": {
        "description": "The number of remaining requests in the current period",
        "schema": {
          "type": "integer"
        }
      },
      "X-Rate-Limit-Reset": {
        "description": "Timestamp of end of current time period as UNIX timestamp, see [Rate Limiting](/en/api/strings/pagination#rate-limiting)",
        "schema": {
          "type": "integer"
        }
      },
      "Pagination": {
        "description": "Pagination details for navigating through a collection of resources, provided in JSON format.",
        "schema": {
          "type": "object",
          "properties": {
            "total_count": {
              "description": "Total count of items in the collection.",
              "type": "integer",
              "example": 10
            },
            "total_pages_count": {
              "description": "Total number of pages available for the collection.",
              "type": "integer",
              "example": 2
            },
            "current_page": {
              "description": "The current page number.",
              "type": "integer",
              "example": 1
            },
            "current_per_page": {
              "description": "Number of items currently displayed per page.",
              "type": "integer",
              "example": 5
            },
            "previous_page": {
              "description": "Page number of the previous page, if available.",
              "type": "integer"
            },
            "next_page": {
              "description": "Page number of the next page, if available.",
              "type": "integer",
              "example": 2
            }
          }
        }
      }
    },
    "schemas": {
      "authorization": {
        "type": "object",
        "title": "authorization",
        "properties": {
          "id": {
            "type": "string"
          },
          "note": {
            "type": "string"
          },
          "token_last_eight": {
            "type": "string"
          },
          "hashed_token": {
            "type": "string"
          },
          "scopes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "expires_at": {
            "type": "string",
            "format": "date-time"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "note": "My Deploy Script",
          "token_last_eight": "1234abcd",
          "hashed_token": "abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234",
          "scopes": [
            "read"
          ],
          "expires_at": "2015-03-30T09:52:53Z",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "authorization_with_token": {
        "allOf": [
          {
            "$ref": "#/components/schemas/authorization"
          },
          {
            "type": "object",
            "title": "authorization_with_token",
            "properties": {
              "token": {
                "type": "string"
              }
            },
            "example": {
              "token": "abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234abcd1234cdef1234"
            }
          }
        ]
      },
      "blacklisted_key": {
        "type": "object",
        "title": "blacklisted_key",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "date.formats.*",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "check_issue": {
        "type": "object",
        "title": "check_issue",
        "properties": {
          "id": {
            "type": "string"
          },
          "check_name": {
            "description": "Identifier of the check that reported this issue. One of: `translation_content_length`, `translation_placeholder_usage`, `translation_glossary_usage`.",
            "type": "string",
            "enum": [
              "translation_content_length",
              "translation_placeholder_usage",
              "translation_glossary_usage"
            ]
          },
          "state": {
            "description": "Current state of the check issue. One of: `active`, `solved`, `dismissed`.",
            "type": "string",
            "enum": [
              "active",
              "solved",
              "dismissed"
            ]
          },
          "description": {
            "description": "Human-readable description of the reported issue, always in English. This message is intended for display only. Its wording may change at any time and it should not be parsed or relied upon programmatically.",
            "type": "string"
          },
          "dismissed_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "solved_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "translation": {
            "$ref": "#/components/schemas/translation"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "check_name": "translation_placeholder_usage",
          "state": "active",
          "description": "The translation contains invalid placeholders. (missing: %{count})",
          "dismissed_at": null,
          "solved_at": null,
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "translation": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "content": "My translation",
            "unverified": false,
            "excluded": false,
            "plural_suffix": "",
            "key": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "home.index.headline",
              "plural": false,
              "use_ordinal_rules": false
            },
            "locale": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "de",
              "code": "de-DE"
            },
            "placeholders": [
              "%{count}"
            ],
            "state": "translated",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          }
        }
      },
      "branch_comparison": {
        "type": "object",
        "title": "branch_comparison",
        "description": "Comparison result of a branch against its base branch. Top-level properties correspond to\nresource types. Each resource type lists changes made in the base branch (`base_changes`),\nchanges made in the feature branch (`head_changes`), and conflicting entries (`conflicts`).\n",
        "properties": {
          "translation_keys": {
            "$ref": "#/components/schemas/branch_comparison_diff"
          },
          "translations": {
            "$ref": "#/components/schemas/branch_comparison_diff"
          },
          "locales": {
            "$ref": "#/components/schemas/branch_comparison_diff"
          },
          "tags": {
            "$ref": "#/components/schemas/branch_comparison_diff"
          }
        },
        "example": {
          "translation_keys": {
            "base_changes": [
              {
                "from": {
                  "name": "welcome.title",
                  "description": null,
                  "name_plural": null,
                  "is_plural": false,
                  "data_type": "string",
                  "max_characters_allowed": null,
                  "deleted_at": null,
                  "locations": [],
                  "options": {}
                },
                "to": {
                  "name": "welcome.heading",
                  "description": null,
                  "name_plural": null,
                  "is_plural": false,
                  "data_type": "string",
                  "max_characters_allowed": null,
                  "deleted_at": null,
                  "locations": [],
                  "options": {}
                }
              }
            ],
            "head_changes": [],
            "conflicts": {}
          },
          "translations": {
            "base_changes": [],
            "head_changes": [
              {
                "from": {
                  "state": "unverified",
                  "content": "Hello",
                  "changed_in_main_locale": false,
                  "excluded_from_export": false,
                  "plural_suffix": null
                },
                "to": {
                  "state": "translated",
                  "content": "Hello World",
                  "changed_in_main_locale": false,
                  "excluded_from_export": false,
                  "plural_suffix": null
                }
              }
            ],
            "conflicts": {}
          },
          "locales": {
            "base_changes": [],
            "head_changes": [],
            "conflicts": {}
          },
          "tags": {
            "base_changes": [],
            "head_changes": [],
            "conflicts": {}
          }
        }
      },
      "branch_comparison_diff": {
        "type": "object",
        "title": "branch_comparison_diff",
        "properties": {
          "base_changes": {
            "type": "array",
            "description": "Changes made to this resource type in the base branch since the branch was created.",
            "items": {
              "$ref": "#/components/schemas/branch_comparison_change"
            }
          },
          "head_changes": {
            "type": "array",
            "description": "Changes made to this resource type in the feature branch.",
            "items": {
              "$ref": "#/components/schemas/branch_comparison_change"
            }
          },
          "conflicts": {
            "type": "object",
            "description": "Conflicting changes present in both branches, keyed by conflict type.\nPossible conflict type keys: `changed_in_head_changed_in_base`,\n`added_in_head_added_in_base`, `changed_in_head_deleted_in_base`,\n`deleted_in_head_changed_in_base`. Each value contains `base` and `head`\narrays of changed attribute objects.\n",
            "additionalProperties": {
              "type": "object",
              "properties": {
                "base": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": true
                  }
                },
                "head": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "additionalProperties": true
                  }
                }
              }
            }
          }
        }
      },
      "branch_comparison_change": {
        "type": "object",
        "title": "branch_comparison_change",
        "description": "A single resource change. `from` holds the state before the change (null when the resource\nwas added). `to` holds the state after (null when the resource was deleted).\nFields depend on the resource type.\n",
        "properties": {
          "from": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          },
          "to": {
            "type": "object",
            "nullable": true,
            "additionalProperties": true
          }
        }
      },
      "comment": {
        "type": "object",
        "title": "comment",
        "properties": {
          "id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "has_replies": {
            "type": "boolean"
          },
          "user": {
            "$ref": "#/components/schemas/user_preview"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "mentioned_users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/user_preview"
            }
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_preview"
            }
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "message": "Some message...",
          "has_replies": true,
          "user": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          },
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "locales": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "English",
              "code": "en-GB"
            }
          ]
        }
      },
      "comment_reaction": {
        "type": "object",
        "title": "comment_reaction",
        "properties": {
          "id": {
            "type": "string"
          },
          "emoji": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "comment": {
            "$ref": "#/components/schemas/comment"
          },
          "user": {
            "$ref": "#/components/schemas/user_preview"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "emoji": "🔥",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "comment": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "message": "Some comment...",
            "name": "Joe Doe"
          },
          "user": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          }
        }
      },
      "custom_metadata_property": {
        "type": "object",
        "title": "custom_metadata_property",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "data_type": {
            "$ref": "#/components/schemas/custom_metadata_data_type"
          },
          "user": {
            "$ref": "#/components/schemas/user_preview"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project_short"
            }
          },
          "value_options": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "Nuts",
          "description": "A healthy snack for all ages",
          "data_type": "multi_select",
          "user": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          },
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "projects": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "value_options": [
            "apple",
            "banana",
            "coconut"
          ]
        }
      },
      "custom_metadata_data_type": {
        "type": "string",
        "description": "data type of the property",
        "enum": [
          "boolean",
          "date",
          "link",
          "multi_select",
          "number",
          "single_select",
          "string",
          "text"
        ],
        "example": "string"
      },
      "placeholder_style": {
        "type": "string",
        "description": "Placeholder style supported for detecting and highlighting variable placeholders in translation keys. This list may grow over time as new styles are added.",
        "x-extensible-enum": [
          "rails_i18n",
          "i18next_nesting",
          "gettext_python",
          "cstyle",
          "python_strings",
          "dot_net",
          "java_properties",
          "laravel",
          "square_brackets",
          "single_percentage",
          "double_percentage",
          "emoji",
          "dollar_style",
          "nsis",
          "razor",
          "double_curly",
          "xliffg",
          "xliff",
          "liquid"
        ],
        "example": "rails_i18n"
      },
      "key_preview": {
        "type": "object",
        "title": "key_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "plural": {
            "type": "boolean"
          },
          "use_ordinal_rules": {
            "type": "boolean"
          }
        },
        "example": null
      },
      "affected_count": {
        "type": "object",
        "title": "affected_count",
        "properties": {
          "records_affected": {
            "type": "integer"
          }
        },
        "example": {
          "records_affected": 96
        }
      },
      "account": {
        "type": "object",
        "title": "account",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "company": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "company_logo_url": {
            "type": "string"
          }
        },
        "example": {
          "id": "abcd1234",
          "name": "Company Account",
          "slug": "company_account",
          "company": "My Awesome Company",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "company_logo_url": "http://assets.example.com/company_logo.png"
        }
      },
      "account_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/account"
          },
          {
            "type": "object",
            "title": "account_details",
            "properties": {
              "subscription": {
                "type": "object",
                "title": "subscription",
                "properties": {
                  "is_current": {
                    "type": "boolean"
                  },
                  "trial_expired": {
                    "type": "boolean"
                  }
                },
                "example": {
                  "is_current": true,
                  "trial_expired": false
                }
              },
              "slug": {
                "type": "string"
              },
              "roles": {
                "type": "array",
                "description": "Roles the requesting user holds in the account.\n",
                "items": {
                  "type": "string"
                }
              }
            },
            "example": {
              "slug": "company-account",
              "subscription": "subscription",
              "roles": [
                "Owner",
                "Admin"
              ]
            }
          }
        ]
      },
      "member": {
        "type": "object",
        "title": "member",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_activity_at": {
            "type": "string",
            "format": "date-time"
          },
          "role": {
            "type": "string"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project_locales"
            }
          },
          "permissions": {
            "type": "object"
          },
          "default_locale_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/team_short"
            }
          },
          "spaces": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "projects_count": {
                  "type": "integer"
                }
              }
            }
          }
        },
        "example": {
          "id": "acbdacbdacbdacbdacbdacbd",
          "email": "foo@bar.com",
          "username": "myname",
          "created_at": "2020-12-07T12:56:21Z",
          "last_activity_at": "2020-12-09T12:56:21Z",
          "role": "Manager",
          "projects": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z",
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-Gb"
                }
              ]
            }
          ],
          "permissions": [
            {
              "create_upload": true,
              "review_translations": true
            }
          ],
          "default_locale_codes": [
            "en",
            "fi"
          ],
          "teams": [
            {
              "id": "04d36d845576b9d494d05e0b70fe813c",
              "name": "Team 1",
              "created_at": "2020-12-07T12:56:21Z",
              "updated_at": "2020-12-07T12:56:21Z"
            }
          ],
          "spaces": [
            {
              "id": "04d36d845576b9d494d05e0b70fe813b",
              "name": "Space2",
              "created_at": "2020-12-07T12:56:21Z",
              "updated_at": "2020-12-07T12:56:21Z",
              "projects_count": 1
            }
          ]
        }
      },
      "member_project_detail": {
        "type": "object",
        "title": "member_project_detail",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project_locales"
            }
          },
          "permissions": {
            "type": "object"
          },
          "locale_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "default_locale_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "spaces": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "created_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "updated_at": {
                  "type": "string",
                  "format": "date-time"
                },
                "projects_count": {
                  "type": "integer"
                }
              }
            }
          },
          "project_roles": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "project_id": {
                  "type": "string"
                },
                "role": {
                  "type": "string"
                }
              }
            }
          }
        },
        "example": {
          "id": "acbdacbdacbdacbdacbdacbd",
          "email": "foo@bar.com",
          "username": "myname",
          "role": "Manager",
          "projects": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z",
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-Gb"
                }
              ]
            }
          ],
          "permissions": [
            {
              "create_upload": true,
              "review_translations": true
            }
          ],
          "locale_ids": [
            "abcd1234abcd1234abcd1234",
            "abcd1234abcd1234abcd1235"
          ],
          "default_locale_codes": [
            "en",
            "fi"
          ],
          "spaces": [
            {
              "id": "04d36d845576b9d494d05e0b70fe813b",
              "name": "Space2",
              "created_at": "2020-12-07T12:56:21Z",
              "updated_at": "2020-12-07T12:56:21Z",
              "projects_count": 1
            }
          ],
          "project_roles": [
            {
              "project_id": "abcd1234cdef1234abcd1234cdef1234",
              "role": "Developer"
            }
          ]
        }
      },
      "invitation": {
        "type": "object",
        "title": "invitation",
        "properties": {
          "id": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "role": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project_short"
            }
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_preview"
            }
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/team_short"
            }
          },
          "default_locale_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "permissions": {
            "type": "object"
          },
          "locale_ids": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "accepted_at": {
            "type": "string",
            "format": "date-time"
          },
          "spaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project/properties/space"
            }
          },
          "project_roles": {
            "type": "array",
            "description": "Per-project roles assigned to the invitee.\n",
            "items": {
              "type": "object",
              "properties": {
                "project_id": {
                  "type": "string"
                },
                "role": {
                  "type": "string"
                }
              }
            }
          }
        },
        "example": {
          "id": "acbdacbdacbdacbdacbdacbd",
          "email": "foo@bar.com",
          "role": "Manager",
          "state": "accepted",
          "projects": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "locales": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "English",
              "code": "en-GB"
            }
          ],
          "default_locale_codes": [
            "en",
            "de"
          ],
          "permissions": [
            {
              "create_upload": true,
              "review_translations": true
            }
          ],
          "locale_ids": [
            "abcd1234abcd1234abcd1234",
            "abcd1234abcd1234abcd1235"
          ],
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "accepted_at": "2015-02-28T09:52:53Z",
          "spaces": [
            {
              "id": "04d36d845576b9d494d05e0b70fe813b",
              "name": "Space2",
              "created_at": "2020-12-07T12:56:21Z",
              "updated_at": "2020-12-07T12:56:21Z",
              "projects_count": 1
            }
          ],
          "teams": [
            {
              "id": "04d36d845576b9d494d05e0b70fe813c",
              "name": "Team 1",
              "created_at": "2020-12-07T12:56:21Z",
              "updated_at": "2020-12-07T12:56:21Z"
            }
          ],
          "project_roles": [
            {
              "project_id": "abcd1234cdef1234abcd1234cdef1234",
              "role": "Developer"
            }
          ]
        }
      },
      "figma_attachment": {
        "type": "object",
        "title": "figma_attachment",
        "properties": {
          "id": {
            "type": "string"
          },
          "url": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "626ea67628690c73ac86ac81eec2d185",
          "url": "https://figma.com/file/something",
          "created_at": "2017-01-28T09:52:53Z",
          "updated_at": "2017-01-28T09:52:53Z"
        }
      },
      "glossary": {
        "type": "object",
        "title": "glossary",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project_short"
            }
          },
          "spaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project/properties/space"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "My glossary",
          "projects": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "spaces": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Project Space",
              "projects_count": 1,
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "glossary_term": {
        "type": "object",
        "title": "glossary_term",
        "properties": {
          "id": {
            "type": "string"
          },
          "term": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "translatable": {
            "type": "boolean"
          },
          "case_sensitive": {
            "type": "boolean"
          },
          "translations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/glossary_term_translation"
            }
          },
          "glossary": {
            "type": "object",
            "description": "The glossary this term belongs to.",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1233",
          "term": "Save",
          "description": "This term is used on the 'Save' buttons of our website",
          "translatable": true,
          "case_sensitive": true,
          "translations": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "locale_code": "fr-FR",
              "content": "Entasser",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            },
            {
              "id": "abcd1234cdef1234abcd1234cdef1235",
              "locale_code": "de-DE",
              "content": "Speichern",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "glossary_term_translation": {
        "type": "object",
        "title": "glossary_term_translation",
        "properties": {
          "id": {
            "type": "string"
          },
          "locale_code": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "locale_code": "en-US",
          "content": "Save",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "project_short": {
        "type": "object",
        "title": "project_short",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "main_format": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "My Android Project",
          "main_format": "xml",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "project_locales": {
        "allOf": [
          {
            "type": "object",
            "title": "project_member_specific",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "project_role": {
                "type": "string"
              },
              "main_format": {
                "type": "string"
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              }
            },
            "example": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "project_role": "Developer",
              "main_format": "xml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          },
          {
            "type": "object",
            "title": "project_locales",
            "properties": {
              "locales": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/locale_preview"
                }
              }
            },
            "example": {
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-GB"
                }
              ]
            }
          }
        ]
      },
      "project_report": {
        "type": "object",
        "title": "project report",
        "properties": {
          "locales_count": {
            "type": "integer"
          },
          "keys_count": {
            "type": "integer"
          },
          "translations_count": {
            "type": "integer"
          },
          "untranslated_keys_count": {
            "type": "integer"
          },
          "unverified_translations_count": {
            "type": "integer"
          },
          "reviewed_translations_count": {
            "type": "integer"
          },
          "managed_words_count": {
            "type": "integer"
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          }
        }
      },
      "locale_preview": {
        "type": "object",
        "title": "locale_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "code": {
            "type": "string"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "English",
          "code": "en-GB"
        }
      },
      "locale": {
        "type": "object",
        "title": "locale",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "default": {
            "type": "boolean"
          },
          "main": {
            "type": "boolean"
          },
          "rtl": {
            "type": "boolean"
          },
          "plural_forms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "ordinal_plural_forms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "source_locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "fallback_locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "language_ai_profile": {
            "type": "string"
          },
          "unverify_new_translations": {
            "type": "boolean",
            "description": "Indicates that new translations for this locale are marked as unverified. Only applies to locales using the basic verification workflow. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature."
          },
          "unverify_updated_translations": {
            "type": "boolean",
            "description": "Indicates that updated translations for this locale are marked as unverified. Only applies to locales using the basic verification workflow. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature."
          },
          "unverify_on_source_changes": {
            "type": "boolean",
            "description": "Indicates that translations for this locale are marked as unverified when the source language has been changed."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "de",
          "code": "de-DE",
          "default": true,
          "main": false,
          "rtl": false,
          "plural_forms": [
            "zero",
            "one",
            "other"
          ],
          "ordinal_plural_forms": [
            "zero",
            "other"
          ],
          "source_locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "en",
            "code": "en-GB"
          },
          "fallback_locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "en",
            "code": "en-GB"
          },
          "language_ai_profile": "abcd1234abcd1234abcd1234abcd1234",
          "unverify_new_translations": false,
          "unverify_updated_translations": false,
          "unverify_on_source_changes": false,
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "locale_download": {
        "type": "object",
        "title": "Async Locale Download",
        "properties": {
          "id": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "processing",
              "completed",
              "error"
            ],
            "description": "The status of the download request. Possible values are `processing`, `completed`, and `error`.\n"
          },
          "result": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "The URL to the download file. This URL is valid for 15 minutes.\n"
              }
            }
          },
          "params": {
            "type": "object",
            "description": "The parameters of the download request.\n",
            "properties": {
              "file_format": {
                "type": "string"
              },
              "locale_id": {
                "type": "string"
              },
              "tags": {
                "type": "string"
              },
              "branch": {
                "type": "string"
              },
              "include_empty_translations": {
                "type": "boolean"
              },
              "include_translated_keys": {
                "type": "boolean"
              },
              "include_unverified_translations": {
                "type": "boolean"
              }
            }
          },
          "error": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "completed_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "status": "completed",
          "result": {
            "url": "https://example.com/locales/abcd1234cdef1234abcd1234cdef1234/download?file_format=yml"
          },
          "params": {
            "file_format": "yml",
            "locale_id": "abcd1234cdef1234abcd1234cdef1234",
            "tags": "feature1,feature2",
            "branch": "my-feature-branch",
            "include_empty_translations": true,
            "include_translated_keys": true,
            "include_unverified_translations": true
          },
          "created_at": "2015-01-28T09:52:53Z",
          "completed_at": "2015-01-28T09:52:53Z"
        }
      },
      "locale_statistics": {
        "type": "object",
        "title": "locale_statistics",
        "properties": {
          "keys_total_count": {
            "type": "integer"
          },
          "keys_untranslated_count": {
            "type": "integer"
          },
          "words_total_count": {
            "type": "integer"
          },
          "translations_completed_count": {
            "type": "integer"
          },
          "translations_unverified_count": {
            "type": "integer"
          },
          "unverified_words_count": {
            "type": "integer"
          },
          "missing_words_count": {
            "type": "integer"
          }
        },
        "example": null
      },
      "locale_report": {
        "type": "object",
        "title": "locale report",
        "properties": {
          "keys_count": {
            "type": "integer"
          },
          "translated_translations_percentage": {
            "type": "number"
          },
          "unverified_translations_percentage": {
            "type": "number"
          },
          "reviewed_translations_percentage": {
            "type": "number"
          },
          "untranslated_keys_percentage": {
            "type": "number"
          },
          "completed_translations_count": {
            "type": "integer"
          },
          "untranslated_keys_count": {
            "type": "integer"
          },
          "unverified_translations_count": {
            "type": "integer"
          },
          "reviewed_translations_count": {
            "type": "integer"
          },
          "source_word_count": {
            "type": "integer"
          },
          "word_count": {
            "type": "integer"
          },
          "word_count_unverified": {
            "type": "integer"
          },
          "word_count_missing": {
            "type": "integer"
          },
          "locale": {
            "$ref": "#/components/schemas/locale_preview"
          }
        }
      },
      "locale_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/locale"
          },
          {
            "type": "object",
            "title": "locale_details",
            "properties": {
              "statistics": {
                "$ref": "#/components/schemas/locale_statistics"
              }
            },
            "example": {
              "statistics": {
                "keys_total_count": 2120,
                "keys_untranslated_count": 100,
                "words_total_count": 3102102,
                "translations_completed_count": 1920,
                "translations_unverified_count": 32,
                "unverified_words_count": 129,
                "missing_words_count": 3920
              }
            }
          }
        ]
      },
      "locale_user_preview": {
        "type": "object",
        "title": "locale_user_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        },
        "example": null
      },
      "locale_team_preview": {
        "type": "object",
        "title": "locale_team_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "role": {
            "type": "string"
          }
        },
        "example": null
      },
      "upload": {
        "type": "object",
        "title": "upload",
        "properties": {
          "id": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "format": {
            "type": "string"
          },
          "state": {
            "type": "string",
            "description": "Processing state of the upload: `initialized`, `processing`, `success`, or `error`. `error` means processing failed — for example the file could not be parsed, or a provided `file_format` didn't match the file's actual content. Poll this field until it leaves `initialized`/`processing` to get the final outcome.\n"
          },
          "error_message": {
            "type": "string",
            "nullable": true,
            "description": "A user-facing message explaining why the upload failed, or `null` if the upload did not fail.\n\nThis message is intended for display only. Its wording may change at any time and it should not be parsed or relied upon programmatically.\n"
          },
          "tag": {
            "type": "string",
            "description": "Unique tag of the upload\n"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of tags that were assigned to the uploaded keys\n"
          },
          "url": {
            "type": "string",
            "description": "The URL to the upload in Phrase Strings app.\n"
          },
          "user": {
            "type": "object",
            "$ref": "#/components/schemas/user_preview"
          },
          "summary": {
            "type": "object",
            "properties": {
              "locales_created": {
                "type": "integer"
              },
              "translation_keys_created": {
                "type": "integer"
              },
              "translation_keys_updated": {
                "type": "integer"
              },
              "translation_keys_unmentioned": {
                "description": "The number of translation keys in the project that were not mentioned in the upload.\n\nNote: this field is not calculated (and shows 0) if the upload contains more than 100,000 keys.\n",
                "type": "integer"
              },
              "translations_created": {
                "type": "integer"
              },
              "translations_updated": {
                "type": "integer"
              },
              "tags_created": {
                "type": "integer"
              },
              "translation_keys_ignored": {
                "type": "integer"
              },
              "processed_translations": {
                "type": "integer"
              },
              "upload_total_translations": {
                "type": "integer"
              }
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "filename": "example.json",
          "format": "json",
          "state": "success",
          "error_message": null,
          "tag": "tag",
          "summary": {
            "locales_created": 2,
            "translation_keys_created": 162,
            "translation_keys_updated": 10,
            "translation_keys_unmentioned": 0,
            "translations_created": 291,
            "translations_updated": 3,
            "tags_created": 2,
            "translation_keys_ignored": 0
          },
          "user": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "johndoe",
            "name": "John Doe",
            "gravatar_uid": "205e460b479e2e5b48aec07710c08d50"
          },
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "format": {
        "type": "object",
        "title": "format",
        "required": [
          "name",
          "api_name",
          "description",
          "extension",
          "default_encoding",
          "importable",
          "exportable",
          "default_file",
          "renders_default_locale",
          "includes_locale_information"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Human-readable display name of the format.",
            "example": "Ruby/Rails YAML"
          },
          "api_name": {
            "type": "string",
            "description": "Identifier used to reference this format in API requests, such as the file_format parameter on the uploads and downloads endpoints.",
            "example": "yml"
          },
          "description": {
            "type": "string",
            "description": "Human-readable summary of the format and its typical use case.",
            "example": "YAML file format for use with Ruby/Rails applications"
          },
          "extension": {
            "type": "string",
            "description": "Default file extension associated with this format.",
            "example": "yml"
          },
          "default_encoding": {
            "type": "string",
            "description": "Default character encoding used when reading or writing files in this format.",
            "example": "UTF-8"
          },
          "importable": {
            "type": "boolean",
            "description": "Whether locale files can be imported using this format.",
            "example": true
          },
          "exportable": {
            "type": "boolean",
            "description": "Whether locale files can be exported using this format.",
            "example": true
          },
          "default_file": {
            "type": "string",
            "description": "Conventional file path pattern for this format. Contains locale_name as a placeholder for the locale identifier.",
            "example": "./config/locales/<locale_name>.yml"
          },
          "renders_default_locale": {
            "type": "boolean",
            "description": "When true, exported files contain the default locale's content for any key that has no translation in the target locale.",
            "example": false
          },
          "includes_locale_information": {
            "type": "boolean",
            "description": "When true, files in this format embed locale information so Phrase can detect the locale automatically on import.",
            "example": false
          }
        },
        "example": {
          "name": "Ruby/Rails YAML",
          "api_name": "yml",
          "description": "YAML file format for use with Ruby/Rails applications",
          "extension": "yml",
          "default_encoding": "UTF-8",
          "importable": true,
          "exportable": true,
          "default_file": "./config/locales/<locale_name>.yml",
          "renders_default_locale": false,
          "includes_locale_information": false
        }
      },
      "languages": {
        "type": "object",
        "title": "languages",
        "description": "Map of all languages supported by Phrase Strings, keyed by their language/locale code. Each value is the human-readable display name for that code.",
        "additionalProperties": {
          "type": "string"
        },
        "example": {
          "de": "German",
          "en": "English",
          "fr": "French"
        }
      },
      "project": {
        "type": "object",
        "title": "project",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "slug": {
            "type": "string"
          },
          "main_format": {
            "type": "string"
          },
          "project_image_url": {
            "type": "string"
          },
          "media": {
            "type": "string"
          },
          "account": {
            "$ref": "#/components/schemas/account"
          },
          "space": {
            "type": "object",
            "title": "space",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "created_at": {
                "type": "string",
                "format": "date-time"
              },
              "updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "projects_count": {
                "type": "integer"
              }
            },
            "example": {
              "id": "2e7574e8f2372906a03110c2a7cfe671",
              "name": "My first space",
              "created_at": "2020-02-25T12:17:25Z",
              "updated_at": "2020-03-13T14:46:57Z",
              "projects_count": 2
            }
          },
          "point_of_contact": {
            "$ref": "#/components/schemas/user_preview"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "My Android Project",
          "slug": "android_project",
          "main_format": "xml",
          "project_image_url": "http://assets.example.com/project.png",
          "account": "account",
          "space": "space",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "project_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/project"
          },
          {
            "type": "object",
            "title": "project_details",
            "properties": {
              "slug": {
                "type": "string"
              },
              "shares_translation_memory": {
                "type": "boolean"
              },
              "machine_translation_enabled": {
                "type": "boolean",
                "example": true
              },
              "zero_plural_form_enabled": {
                "type": "boolean",
                "example": true
              },
              "enable_all_data_type_translation_keys_for_translators": {
                "type": "boolean",
                "example": false
              },
              "enable_icu_message_format": {
                "type": "boolean",
                "example": false
              },
              "enable_branching": {
                "type": "boolean",
                "example": false
              },
              "protect_master_branch": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_enabled": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_check_new_translation_keys": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_check_new_uploads": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_check_new_locales": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_mark_as_unverified": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_use_machine_translation": {
                "type": "boolean",
                "example": false
              },
              "autotranslate_use_translation_memory": {
                "type": "boolean",
                "example": true
              },
              "autotranslate_overwrite_unverified_translations": {
                "type": "boolean",
                "example": false
              },
              "fallback_for_unverified_translations": {
                "type": "boolean",
                "example": false
              },
              "autocomplete_job_enabled": {
                "type": "boolean",
                "example": false
              },
              "default_encoding": {
                "type": "string",
                "example": "UTF-8"
              },
              "cldr_version": {
                "type": "string",
                "example": "legacy"
              },
              "translation_keys_sort_collation": {
                "type": "string",
                "example": "unicode_ci",
                "enum": [
                  "general_ci",
                  "unicode_ci"
                ]
              },
              "job_locking_enabled": {
                "type": "boolean",
                "example": false
              },
              "placeholder_styles": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/placeholder_style"
                },
                "example": [
                  "rails_i18n",
                  "java_properties"
                ]
              },
              "branch": {
                "$ref": "#/components/schemas/branch"
              }
            },
            "example": {
              "slug": "my-android-project",
              "shares_translation_memory": true,
              "machine_translation_enabled": true,
              "zero_plural_form_enabled": true,
              "enable_all_data_type_translation_keys_for_translators": false,
              "enable_icu_message_format": false,
              "enable_branching": false,
              "protect_master_branch": false,
              "autotranslate_enabled": false,
              "autotranslate_check_new_translation_keys": false,
              "autotranslate_check_new_uploads": false,
              "autotranslate_check_new_locales": false,
              "autotranslate_mark_as_unverified": false,
              "autotranslate_use_machine_translation": false,
              "autotranslate_use_translation_memory": true,
              "autotranslate_overwrite_unverified_translations": false,
              "fallback_for_unverified_translations": false,
              "autocomplete_job_enabled": false,
              "default_encoding": "UTF-8",
              "cldr_version": "legacy",
              "translation_keys_sort_collation": "unicode_ci",
              "job_locking_enabled": false,
              "placeholder_styles": [
                "rails_i18n",
                "java_properties"
              ]
            }
          }
        ]
      },
      "styleguide": {
        "type": "object",
        "title": "styleguide",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "title": "My Style Guide",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "styleguide_preview": {
        "type": "object",
        "title": "styleguide_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "title": "My Style Guide"
        }
      },
      "styleguide_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/styleguide"
          },
          {
            "type": "object",
            "title": "styleguide_details",
            "properties": {
              "public_url": {
                "type": "string"
              },
              "audience": {
                "type": "string"
              },
              "target_audience": {
                "type": "string"
              },
              "grammatical_person": {
                "type": "string"
              },
              "vocabulary_type": {
                "type": "string"
              },
              "business": {
                "type": "string"
              },
              "company_branding": {
                "type": "string"
              },
              "formatting": {
                "type": "string"
              },
              "glossary_terms": {
                "type": "string"
              },
              "grammar_consistency": {
                "type": "string"
              },
              "literal_translation": {
                "type": "string"
              },
              "overall_tone": {
                "type": "string"
              },
              "samples": {
                "type": "string"
              }
            },
            "example": {
              "public_url": "https://phrase.com/styleguide/my-project/26f065cf597be340",
              "audience": "customer-facing",
              "target_audience": "teenager",
              "grammatical_person": "first_person_singular",
              "vocabulary_type": "technical",
              "business": "We are a travel site that helps customers find the best hotels and flights.",
              "company_branding": "ACME Inc. should never be translated.",
              "formatting": "Never use capital letters",
              "glossary_terms": "Apartment, cabin, loft",
              "grammar_consistency": "",
              "literal_translation": "Neutral",
              "overall_tone": "Tone should be fun and light",
              "samples": "http://www.myexample.com/my/document/path/to/samples.pdf"
            }
          }
        ]
      },
      "tag": {
        "type": "object",
        "title": "tag",
        "properties": {
          "name": {
            "type": "string"
          },
          "keys_count": {
            "type": "integer"
          },
          "system_tag": {
            "type": "boolean",
            "description": "`true` when the tag was created automatically by the system (e.g. for jobs, uploads, or Figma attachments) rather than by a user.\n"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "name": "my-feature",
          "keys_count": 8,
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "tag_with_stats": {
        "allOf": [
          {
            "$ref": "#/components/schemas/tag"
          },
          {
            "type": "object",
            "title": "tag_with_stats",
            "properties": {
              "statistics": {
                "type": "array",
                "items": {
                  "type": "object",
                  "properties": {
                    "locale": {
                      "$ref": "#/components/schemas/locale_preview"
                    },
                    "statistics": {
                      "type": "object",
                      "properties": {
                        "keys_total_count": {
                          "type": "integer"
                        },
                        "translations_completed_count": {
                          "type": "integer"
                        },
                        "translations_unverified_count": {
                          "type": "integer"
                        },
                        "keys_untranslated_count": {
                          "type": "integer"
                        }
                      }
                    }
                  }
                }
              }
            },
            "example": {
              "statistics": [
                {
                  "locale": {
                    "id": "abcd1234cdef1234abcd1234cdef1234",
                    "name": "de",
                    "code": "de-DE"
                  },
                  "statistics": {
                    "keys_total_count": 12,
                    "translations_completed_count": 9,
                    "translations_unverified_count": 11,
                    "keys_untranslated_count": 3
                  }
                }
              ]
            }
          }
        ]
      },
      "translation": {
        "type": "object",
        "title": "translation",
        "properties": {
          "id": {
            "type": "string"
          },
          "content": {
            "type": "string",
            "x-json-tag": "json:\"content\""
          },
          "unverified": {
            "type": "boolean"
          },
          "excluded": {
            "type": "boolean"
          },
          "plural_suffix": {
            "type": "string"
          },
          "key": {
            "$ref": "#/components/schemas/key_preview"
          },
          "locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "placeholders": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "linked_translation": {
            "type": "object",
            "title": "translation_parent",
            "properties": {
              "id": {
                "type": "string"
              },
              "content": {
                "type": "string"
              }
            },
            "example": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "content": "My parent translation"
            }
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "content": "My translation",
          "unverified": false,
          "excluded": false,
          "plural_suffix": "",
          "key": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "home.index.headline",
            "plural": false,
            "use_ordinal_rules": false
          },
          "locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "de",
            "code": "de-DE"
          },
          "placeholders": [
            "%{count}"
          ],
          "state": "translated",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "translation_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/translation"
          },
          {
            "type": "object",
            "title": "translation_details",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/user_preview"
              },
              "word_count": {
                "type": "integer"
              }
            },
            "example": {
              "user": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "word_count": 2
            }
          }
        ]
      },
      "translation_key": {
        "type": "object",
        "title": "translation_key",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "name_hash": {
            "type": "string"
          },
          "plural": {
            "type": "boolean"
          },
          "use_ordinal_rules": {
            "type": "boolean"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "data_type": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "home.index.headline",
          "description": "My description for this key...",
          "name_hash": "1b31d2580ce324f246f66b3be00ed399",
          "plural": false,
          "use_ordinal_rules": false,
          "tags": [
            "awesome-feature",
            "needs-proofreading"
          ],
          "data_type": "string",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "translation_key_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/translation_key"
          },
          {
            "type": "object",
            "title": "translation_key_details",
            "properties": {
              "name_plural": {
                "type": "string"
              },
              "comments_count": {
                "type": "integer"
              },
              "max_characters_allowed": {
                "type": "integer"
              },
              "screenshot_url": {
                "type": "string"
              },
              "unformatted": {
                "type": "boolean"
              },
              "xml_space_preserve": {
                "type": "boolean"
              },
              "original_file": {
                "type": "string"
              },
              "format_value_type": {
                "type": "string"
              },
              "creator": {
                "$ref": "#/components/schemas/user_preview"
              },
              "custom_metadata": {
                "type": "object",
                "title": "custom_metadata",
                "additionalProperties": {
                  "type": "string"
                }
              }
            },
            "example": {
              "name_plural": "home.index.headlines",
              "comments_count": 2,
              "data_type": "string",
              "max_characters_allowed": 140,
              "screenshot_url": "http://assets.example.com/screenshot.png",
              "unformatted": false,
              "xml_space_preserve": false,
              "original_file": "",
              "format_value_type": "",
              "creator": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "custom_metadata": {
                "fruit": "Apple",
                "vegetable": "Tomato"
              }
            }
          }
        ]
      },
      "affected_resources": {
        "type": "object",
        "title": "affected_resources",
        "properties": {
          "records_affected": {
            "type": "integer"
          }
        },
        "example": {
          "records_affected": 2
        }
      },
      "translation_order": {
        "type": "object",
        "title": "translation_order",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "lsp": {
            "type": "string"
          },
          "amount_in_cents": {
            "type": "integer"
          },
          "currency": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "state": {
            "type": "string"
          },
          "translation_type": {
            "type": "string"
          },
          "progress_percent": {
            "type": "integer"
          },
          "source_locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "target_locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_preview"
            }
          },
          "tag_name": {
            "type": "string",
            "description": "Name of the tag whose keys are included in the order."
          },
          "styleguide": {
            "$ref": "#/components/schemas/styleguide_preview"
          },
          "unverify_translations_upon_delivery": {
            "type": "boolean"
          },
          "quality": {
            "type": "boolean"
          },
          "priority": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "30AB4884",
          "lsp": "gengo",
          "amount_in_cents": 1152,
          "currency": "usd",
          "message": "Please make everything sound really nice :)",
          "state": "confirmed",
          "translation_type": "pro",
          "progress_percent": 50,
          "source_locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "en",
            "code": "en-GB"
          },
          "target_locales": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "de",
              "code": "de-DE"
            },
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "fr",
              "code": "fr-FR"
            }
          ],
          "tag_name": "latest-upload",
          "styleguide": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "title": "My Styleguide"
          },
          "unverify_translations_upon_delivery": true,
          "quality": true,
          "priority": true,
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "pre_translation": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "example": "abcd1234cdef1234abcd1234cdef1234"
          },
          "status": {
            "type": "string",
            "enum": [
              "pending",
              "running",
              "success",
              "error"
            ],
            "description": "Current execution state of the pre-translation job. Jobs start as `pending` while queued, transition to `running` while executing, and settle to `success` or `error`.\n"
          },
          "translatable_type": {
            "type": "string",
            "enum": [
              "locale",
              "job",
              "translation_key",
              "upload"
            ],
            "description": "Resource type that was pre-translated."
          },
          "translatable_id": {
            "type": "string",
            "description": "ID of the targeted resource (locale ID, job ID, key ID, or upload ID).",
            "example": "abcd1234cdef1234abcd1234cdef1234"
          },
          "error": {
            "type": "string",
            "nullable": true,
            "description": "Error message. `null` unless the job's status is `error`."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "translation_version": {
        "type": "object",
        "title": "translation_version",
        "properties": {
          "id": {
            "type": "string"
          },
          "content": {
            "type": "string"
          },
          "plural_suffix": {
            "type": "string"
          },
          "key": {
            "$ref": "#/components/schemas/key_preview"
          },
          "locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "changed_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "content": "My translation",
          "plural_suffix": "",
          "key": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "home.index.headline",
            "plural": false
          },
          "locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "en",
            "code": "en-GB"
          },
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "changed_at": "2015-01-28T09:52:53Z"
        }
      },
      "translation_version_with_user": {
        "allOf": [
          {
            "$ref": "#/components/schemas/translation_version"
          },
          {
            "type": "object",
            "title": "translation_version_with_user",
            "properties": {
              "user": {
                "$ref": "#/components/schemas/user_preview"
              }
            },
            "example": {
              "user": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              }
            }
          }
        ]
      },
      "user_preview": {
        "type": "object",
        "title": "user_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "gravatar_uid": {
            "type": "string"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "username": "johndoe",
          "name": "John Doe",
          "gravatar_uid": "205e460b479e2e5b48aec07710c08d50"
        }
      },
      "user": {
        "type": "object",
        "title": "user",
        "properties": {
          "id": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "position": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "username": "joe.doe",
          "name": "Joe Doe",
          "position": "Lead Developer",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "current_user": {
        "type": "object",
        "title": "user",
        "properties": {
          "id": {
            "type": "string"
          },
          "username": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "position": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "username": "joe.doe",
          "name": "Joe Doe",
          "email": "joe@phrase.com",
          "position": "Lead Developer",
          "language": "de",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "webhook": {
        "type": "object",
        "title": "webhook",
        "properties": {
          "id": {
            "type": "string"
          },
          "callback_url": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "events": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "active": {
            "type": "boolean"
          },
          "include_branches": {
            "type": "boolean"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "callback_url": "http://example.com/hooks/phraseapp-notifications",
          "description": "My webhook for chat notifications",
          "events": "locales:create,translations:update",
          "active": true,
          "include_branches": false,
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "webhook_delivery": {
        "type": "object",
        "title": "webhook delivery",
        "properties": {
          "id": {
            "type": "string"
          },
          "webhook_id": {
            "type": "string"
          },
          "response_status_code": {
            "type": "integer"
          },
          "delivered_at": {
            "type": "string",
            "format": "date-time"
          },
          "duration_ms": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        }
      },
      "space": {
        "type": "object",
        "title": "space",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "projects_count": {
            "type": "integer"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project"
            }
          }
        },
        "example": {
          "id": "2e7574e8f2372906a03110c2a7cfe671",
          "name": "My first space",
          "created_at": "2020-02-25T12:17:25Z",
          "updated_at": "2020-03-13T14:46:57Z",
          "projects_count": 2,
          "projects": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "project_image_url": "http://assets.example.com/project.png",
              "account": "account",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            },
            {
              "id": "abcd11231fadef1234adacd1234cdef1234",
              "name": "My IOS Project",
              "main_format": "yml",
              "project_image_url": "http://assets.example.com/project2.png",
              "account": "account",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ]
        }
      },
      "team": {
        "type": "object",
        "title": "team",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project"
            }
          },
          "spaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project/properties/space"
            }
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/user_preview"
            }
          }
        },
        "example": {
          "id": "2e7574e8f2372906a03110c2a7cfe671",
          "name": "My first Team",
          "created_at": "2020-02-25T12:17:25Z",
          "updated_at": "2020-03-13T14:46:57Z",
          "projects": [
            {
              "id": "abcd11231fadef1234adacd1234cdef1234",
              "name": "My IOS Project",
              "main_format": "yml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "spaces": [
            {
              "id": "626ea67628690c73ac86ac81eec2d185",
              "name": "IOS",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z",
              "projects_count": 3
            }
          ],
          "users": [
            {
              "id": "3465jhkjhk3465hjjkhl346hklk3456kl",
              "username": "Max",
              "name": "Max Mustermann"
            }
          ]
        }
      },
      "team_detail": {
        "type": "object",
        "title": "team",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "projects": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project"
            }
          },
          "spaces": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/project/properties/space"
            }
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/user"
            }
          }
        },
        "example": {
          "id": "2e7574e8f2372906a03110c2a7cfe671",
          "name": "My first Team",
          "created_at": "2020-02-25T12:17:25Z",
          "updated_at": "2020-03-13T14:46:57Z",
          "projects": [
            {
              "id": "abcd11231fadef1234adacd1234cdef1234",
              "name": "My IOS Project",
              "main_format": "yml",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ],
          "spaces": [
            {
              "id": "626ea67628690c73ac86ac81eec2d185",
              "name": "IOS",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z",
              "projects_count": 3
            }
          ],
          "users": [
            {
              "id": "3465jhkjhk3465hjjkhl346hklk3456kl",
              "username": "Max",
              "name": "Max Mustermann",
              "position": "Developer",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          ]
        }
      },
      "team_short": {
        "type": "object",
        "title": "team_short",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "2e7574e8f2372906a03110c2a7cfe671",
          "name": "My first Team",
          "created_at": "2020-02-25T12:17:25Z",
          "updated_at": "2020-03-13T14:46:57Z"
        }
      },
      "job": {
        "type": "object",
        "title": "job",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "briefing": {
            "type": "string"
          },
          "due_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "state": {
            "type": "string"
          },
          "ticket_url": {
            "type": "string"
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          },
          "branch": {
            "type": "object",
            "title": "branch_name",
            "properties": {
              "name": {
                "type": "string"
              }
            },
            "example": {
              "name": "new-branch"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "automation_id": {
            "type": "string",
            "nullable": true,
            "description": "The ID of the automation that created this job, or null if the job was created manually."
          },
          "job_template_id": {
            "type": "string",
            "nullable": true,
            "description": "The ID of the job template this job was created from, or null if no template was used."
          },
          "review_due_date": {
            "type": "string",
            "format": "date-time",
            "nullable": true,
            "description": "The review due date for this job. Returns `null` when the project does not have review workflow enabled.",
            "example": "2015-03-25T11:43:52Z"
          }
        },
        "example": {
          "id": "626ea67628690c73ac86ac81eec2d185",
          "name": "Translations for new Feature",
          "briefing": "Some instructions for the translators",
          "due_date": "2017-02-28T09:52:53Z",
          "state": "completed",
          "ticket_url": "https://example.atlassian.net/browse/FOO",
          "created_at": "2017-01-28T09:52:53Z",
          "updated_at": "2017-01-28T09:52:53Z",
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          }
        }
      },
      "job_annotation": {
        "type": "object",
        "title": "job_annotation",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "example": {
          "name": "priority",
          "value": "high",
          "created_at": "2023-10-01T12:00:00Z",
          "updated_at": "2023-10-01T12:00:00Z"
        }
      },
      "job_annotation_short": {
        "type": "object",
        "title": "job_annotation",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "example": {
          "name": "priority",
          "value": "high"
        }
      },
      "job_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/job"
          },
          {
            "type": "object",
            "title": "job_details",
            "properties": {
              "owner": {
                "$ref": "#/components/schemas/user_preview"
              },
              "job_tag_name": {
                "type": "string"
              },
              "source_translations_updated_at": {
                "type": "string",
                "format": "date-time"
              },
              "source_locale": {
                "$ref": "#/components/schemas/locale_preview"
              },
              "locales": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/locale_preview"
                }
              },
              "keys": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/key_preview"
                }
              },
              "annotations": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/job_annotation_short"
                },
                "description": "Returned only when `include_annotations=true` is supplied on the request."
              },
              "locked": {
                "type": "boolean",
                "description": "`true` if the job has been locked by the project's job-locking workflow (translations attached to the job are read-only until the job advances).\n"
              },
              "automation_id": {
                "type": "string",
                "nullable": true,
                "description": "The ID of the automation that created this job, or null if the job was created manually."
              },
              "job_template_id": {
                "type": "string",
                "nullable": true,
                "description": "The ID of the job template this job was created from, or null if no template was used."
              },
              "review_due_date": {
                "type": "string",
                "format": "date-time",
                "nullable": true,
                "description": "The review due date for this job. Returns `null` when the project does not have review workflow enabled.",
                "example": "2015-03-25T11:43:52Z"
              }
            },
            "example": {
              "owner": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "job_tag_name": "Job_123",
              "source_translations_updated_at": "2020-01-01T00:00:00Z",
              "source_locale": {
                "id": "abcd1234cdef1234abcd1234cdef1235",
                "name": "de-DE",
                "code": "de-DE"
              },
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-GB"
                }
              ],
              "keys": [
                {
                  "id": "dbcd1234cdef1234abcd1234cdef1234",
                  "name": "greeting.hello"
                }
              ]
            }
          }
        ]
      },
      "job_preview": {
        "type": "object",
        "title": "job_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "state": {
            "type": "string"
          }
        },
        "example": null
      },
      "job_locale": {
        "type": "object",
        "title": "job_locale",
        "properties": {
          "id": {
            "type": "string"
          },
          "job": {
            "$ref": "#/components/schemas/job_preview"
          },
          "locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_user_preview"
            }
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_team_preview"
            }
          },
          "completed": {
            "type": "boolean"
          },
          "translation_completed_at": {
            "type": "string",
            "format": "date-time"
          },
          "review_completed_at": {
            "type": "string",
            "format": "date-time"
          },
          "annotations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/job_annotation_short"
            }
          }
        },
        "example": {
          "id": "626ea67628690c73ac86ac81eec2d185",
          "job": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Job 1",
            "state": "completed"
          },
          "users": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "username": "joe.doe",
              "name": "Joe Doe",
              "role": "translator"
            }
          ],
          "teams": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "Joe's team",
              "role": "translator"
            }
          ],
          "locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "English",
            "code": "en-GB"
          },
          "annotations": [
            {
              "name": "priority",
              "value": "high",
              "created_at": "2023-10-01T12:00:00Z",
              "updated_at": "2023-10-01T12:00:00Z"
            }
          ],
          "completed": true,
          "translation_completed_at": "2017-01-28T09:52:53Z",
          "review_completed_at": "2017-01-28T09:52:53Z"
        }
      },
      "job_template": {
        "type": "object",
        "title": "job_template",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "briefing": {
            "type": "string"
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          },
          "branch": {
            "$ref": "#/components/schemas/job/properties/branch"
          },
          "autotranslate_enabled": {
            "type": "boolean",
            "description": "When `true`, jobs created from this template are auto-translated on creation.\n"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "626ea67628690c73ac86ac81eec2d185",
          "name": "template",
          "briefing": "text",
          "created_at": "2017-01-28T09:52:53Z",
          "updated_at": "2017-01-28T09:52:53Z",
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          }
        }
      },
      "job_template_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/job_template"
          },
          {
            "type": "object",
            "title": "job_template_details",
            "properties": {
              "owner": {
                "$ref": "#/components/schemas/user_preview"
              },
              "creator": {
                "$ref": "#/components/schemas/user_preview"
              },
              "locales": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/locale_preview"
                }
              }
            },
            "example": {
              "owner": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "creator": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-GB"
                }
              ]
            }
          }
        ]
      },
      "job_template_locales": {
        "type": "object",
        "title": "job_template_locale",
        "properties": {
          "id": {
            "type": "string"
          },
          "job_template": {
            "type": "object",
            "title": "job_template_preview",
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              }
            },
            "example": null
          },
          "locale": {
            "$ref": "#/components/schemas/locale_preview"
          },
          "users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_user_preview"
            }
          },
          "teams": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_team_preview"
            }
          }
        },
        "example": {
          "id": "626ea67628690c73ac86ac81eec2d185",
          "job_template": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "template"
          },
          "users": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "username": "joe.doe",
              "name": "Joe Doe",
              "role": "translator"
            }
          ],
          "teams": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "Joe's team",
              "role": "translator"
            }
          ],
          "locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "English",
            "code": "en-GB"
          }
        }
      },
      "job_comment": {
        "type": "object",
        "title": "job_comment",
        "properties": {
          "id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          },
          "job_id": {
            "type": "string"
          },
          "user": {
            "$ref": "#/components/schemas/user_preview"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "mentioned_users": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/user_preview"
            }
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "message": "Some message...",
          "job_id": "abcd1234cdef1234abcd1234cdef1234",
          "user": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          },
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "branch": {
        "type": "object",
        "title": "branch",
        "properties": {
          "base_project_id": {
            "type": "string"
          },
          "branch_project_id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "base": {
            "type": "string",
            "nullable": true,
            "description": "Name of the base branch this branch was created from. Only present for branches created with the newer branching system."
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "merged_at": {
            "type": "string",
            "format": "date-time"
          },
          "merged_by": {
            "$ref": "#/components/schemas/user_preview"
          },
          "created_by": {
            "$ref": "#/components/schemas/user_preview"
          },
          "state": {
            "type": "string",
            "enum": [
              "creating_branch",
              "merging_branch",
              "syncing_branch",
              "merged",
              "success",
              "branch_error",
              "merge_conflict"
            ]
          },
          "child_branches": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "example": {
          "name": "new-branch",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "merged_at": "2015-01-28T09:52:53Z",
          "merged_by": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          },
          "created_by": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          },
          "state": "success",
          "child_branches": [
            "feature_2",
            "feature_3"
          ]
        }
      },
      "distribution": {
        "type": "object",
        "title": "distribution",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "release_count": {
            "type": "integer"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "deleted_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "Android Distribution",
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          },
          "platforms": [
            "android"
          ],
          "release_count": 10,
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "distribution_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/distribution"
          },
          {
            "type": "object",
            "title": "distribution_details",
            "properties": {
              "locales": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/locale_preview"
                }
              },
              "releases": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/release_preview"
                }
              }
            },
            "example": {
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-GB"
                }
              ],
              "releases": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "version": 1,
                  "project": {
                    "id": "abcd1234cdef1234abcd1234cdef1234",
                    "name": "My Android Project",
                    "main_format": "xml",
                    "created_at": "2015-01-28T09:52:53Z",
                    "updated_at": "2015-01-28T09:52:53Z"
                  },
                  "platforms": [
                    "android"
                  ],
                  "environments": [
                    "development"
                  ],
                  "locale_codes": [
                    "de",
                    "en"
                  ],
                  "created_at": "2015-01-28T09:52:53Z",
                  "updated_at": "2015-01-28T09:52:53Z"
                }
              ]
            }
          }
        ]
      },
      "release_preview": {
        "type": "object",
        "title": "release_preview",
        "properties": {
          "id": {
            "type": "string"
          },
          "version": {
            "type": "integer"
          },
          "app_min_version": {
            "type": "string"
          },
          "app_max_version": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "environments": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "locale_codes": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "version": 1,
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          },
          "platforms": [
            "android"
          ],
          "environments": [
            "development"
          ],
          "locale_codes": [
            "de",
            "en"
          ],
          "tags": [
            "android",
            "feature1"
          ],
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "release": {
        "type": "object",
        "title": "release",
        "properties": {
          "id": {
            "type": "string"
          },
          "version": {
            "type": "integer"
          },
          "app_min_version": {
            "type": "string"
          },
          "app_max_version": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "platforms": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "environments": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_preview"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "state": {
            "type": "string"
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "version": 1,
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          },
          "platforms": [
            "android"
          ],
          "environments": [
            "development",
            "production"
          ],
          "locales": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "English",
              "code": "en-GB"
            }
          ],
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "release_trigger": {
        "type": "object",
        "title": "release_trigger",
        "properties": {
          "id": {
            "type": "string"
          },
          "branch": {
            "type": "string"
          },
          "cron_schedule": {
            "type": "string",
            "description": "Cron schedule for the scheduler. Read more about the format of this field at https://en.wikipedia.org/wiki/Cron"
          },
          "time_zone": {
            "type": "string",
            "description": "Time zone for the scheduler"
          },
          "next_run_at": {
            "type": "string",
            "format": "date-time",
            "description": "The next time a release will be created for this trigger"
          },
          "app_min_version": {
            "type": "string"
          },
          "app_max_version": {
            "type": "string"
          },
          "locales": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/locale_preview"
            }
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "locales": [
            {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "English",
              "code": "en-GB"
            }
          ],
          "branch": "my-feature-branch",
          "tags": [
            "android",
            "feature1"
          ],
          "cron_schedule": "15 18 * * 1,3",
          "time_zone": "Europe/Berlin",
          "next_run_at": "2015-01-28T09:52:53Z",
          "app_min_version": "1.0.0",
          "app_max_version": "2.0.0",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "screenshot": {
        "type": "object",
        "title": "screenshot",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "description": {
            "type": "string"
          },
          "screenshot_url": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "markers_count": {
            "type": "integer"
          }
        },
        "example": {
          "id": "d2e056aa9e70b01121f41693e344f5ee",
          "name": "A screenshot name",
          "description": "A screenshot description",
          "screenshot_url": "http://assets.example.com/screenshot.png",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "markers_count": 0
        }
      },
      "screenshot_marker": {
        "type": "object",
        "title": "screenshot_marker",
        "properties": {
          "id": {
            "type": "string"
          },
          "presentation": {
            "type": "object",
            "description": "Coordinates and size of the marker on the screenshot, in pixels.\n",
            "properties": {
              "x": {
                "type": "integer"
              },
              "y": {
                "type": "integer"
              },
              "w": {
                "type": "integer"
              },
              "h": {
                "type": "integer"
              }
            }
          },
          "presentation_type": {
            "type": "string",
            "description": "Marker presentation style. The default value is `default`.\n"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "translation_key": {
            "$ref": "#/components/schemas/translation_key"
          }
        },
        "example": {
          "id": "d2e056aa9e70b01121f41693e344f5ee",
          "presentation": {
            "x": 10,
            "y": 10,
            "w": 10,
            "h": 10
          },
          "presentation_type": "default",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "translation_key": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "home.index.headline",
            "description": "My description for this key...",
            "name_hash": "1b31d2580ce324f246f66b3be00ed399",
            "plural": false,
            "tags": [
              "awesome-feature",
              "needs-proofreading"
            ],
            "data_type": "string",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          }
        }
      },
      "variable": {
        "type": "object",
        "title": "variable",
        "properties": {
          "name": {
            "type": "string"
          },
          "value": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "name": "MY_VARIABLE",
          "value": "Hello World",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "icu": {
        "type": "object",
        "title": "skeleton",
        "properties": {
          "locale_code": {
            "type": "string",
            "description": "Object keys are dynamic and based on requested locale codes, see example."
          }
        },
        "example": {
          "en": "{number, plural, one {} other {}}",
          "de": "{number, plural, one {} other {}}"
        }
      },
      "notification": {
        "type": "object",
        "title": "notification",
        "properties": {
          "id": {
            "type": "string"
          },
          "event_name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "delivered_at": {
            "type": "string",
            "format": "date-time"
          },
          "seen_at": {
            "type": "string",
            "format": "date-time"
          },
          "data": {
            "type": "object"
          },
          "resource": {
            "type": "object"
          },
          "locale": {
            "$ref": "#/components/schemas/locale"
          },
          "user": {
            "$ref": "#/components/schemas/user_preview"
          },
          "project": {
            "$ref": "#/components/schemas/project"
          },
          "account": {
            "$ref": "#/components/schemas/account"
          },
          "group": {
            "$ref": "#/components/schemas/notification_group"
          }
        },
        "example": {
          "id": "abcd1234",
          "event_name": "keys:create",
          "data": "object notification data",
          "resource": "object of notification resource",
          "locale": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "de",
            "code": "de-DE",
            "default": true,
            "main": false,
            "rtl": false,
            "plural_forms": [
              "zero",
              "one",
              "other"
            ],
            "source_locale": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "en",
              "code": "en-GB"
            },
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          },
          "user": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "username": "joe.doe",
            "name": "Joe Doe"
          },
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "project_image_url": "http://assets.example.com/project.png",
            "account": {
              "id": "abcd1234",
              "name": "Company Account",
              "slug": "company_account",
              "company": "My Awesome Company",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z",
              "company_logo_url": "http://assets.example.com/company_logo.png"
            },
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          },
          "account": {
            "id": "abcd1234",
            "name": "Company Account",
            "slug": "company_account",
            "company": "My Awesome Company",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z",
            "company_logo_url": "http://assets.example.com/company_logo.png"
          },
          "group": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "event_name": "keys:create",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          }
        }
      },
      "notification_group": {
        "type": "object",
        "title": "notification_group",
        "properties": {
          "id": {
            "type": "string"
          },
          "event_name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "event_name": "keys:create",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z"
        }
      },
      "notification_group_detail": {
        "type": "object",
        "title": "notification_group_detail",
        "properties": {
          "id": {
            "type": "string"
          },
          "event_name": {
            "type": "string"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          },
          "notifications_count": {
            "type": "integer"
          },
          "latest_notification": {
            "$ref": "#/components/schemas/notification"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "event_name": "keys:create",
          "created_at": "2015-01-28T09:52:53Z",
          "updated_at": "2015-01-28T09:52:53Z",
          "latest_notification": {
            "id": "abcd1234",
            "event_name": "keys:create",
            "data": "object notification data",
            "resource": "object of notification resource",
            "locale": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "de",
              "code": "de-DE",
              "default": true,
              "main": false,
              "rtl": false,
              "plural_forms": [
                "zero",
                "one",
                "other"
              ],
              "source_locale": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "name": "en",
                "code": "en-GB"
              },
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            },
            "user": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "username": "joe.doe",
              "name": "Joe Doe"
            },
            "project": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "name": "My Android Project",
              "main_format": "xml",
              "project_image_url": "http://assets.example.com/project.png",
              "account": {
                "id": "abcd1234",
                "name": "Company Account",
                "slug": "company_account",
                "company": "My Awesome Company",
                "created_at": "2015-01-28T09:52:53Z",
                "updated_at": "2015-01-28T09:52:53Z",
                "company_logo_url": "http://assets.example.com/company_logo.png"
              },
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            },
            "account": {
              "id": "abcd1234",
              "name": "Company Account",
              "slug": "company_account",
              "company": "My Awesome Company",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z",
              "company_logo_url": "http://assets.example.com/company_logo.png"
            },
            "group": {
              "id": "abcd1234cdef1234abcd1234cdef1234",
              "event_name": "keys:create",
              "created_at": "2015-01-28T09:52:53Z",
              "updated_at": "2015-01-28T09:52:53Z"
            }
          }
        }
      },
      "organization_job_template": {
        "type": "object",
        "title": "organization_job_template",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "briefing": {
            "type": "string"
          },
          "autotranslate_enabled": {
            "type": "boolean",
            "description": "When `true`, jobs created from this template are auto-translated on creation. Maps to the `autotranslate` field on the request body.\n"
          },
          "source_locale_id": {
            "type": "string",
            "description": "Optional. ID of the source locale used by jobs created from this template. When omitted, the project's default source locale is used.\n",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "626ea67628690c73ac86ac81eec2d185",
          "name": "template",
          "briefing": "text",
          "created_at": "2017-01-28T09:52:53Z",
          "updated_at": "2017-01-28T09:52:53Z"
        }
      },
      "organization_job_template_details": {
        "allOf": [
          {
            "$ref": "#/components/schemas/organization_job_template"
          },
          {
            "type": "object",
            "title": "organization_job_template_details",
            "properties": {
              "owner": {
                "$ref": "#/components/schemas/user_preview"
              },
              "creator": {
                "$ref": "#/components/schemas/user_preview"
              },
              "locales": {
                "type": "array",
                "items": {
                  "$ref": "#/components/schemas/locale_preview"
                }
              }
            },
            "example": {
              "owner": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "creator": {
                "id": "abcd1234cdef1234abcd1234cdef1234",
                "username": "joe.doe",
                "name": "Joe Doe"
              },
              "locales": [
                {
                  "id": "abcd1234cdef1234abcd1234cdef1234",
                  "name": "English",
                  "code": "en-GB"
                }
              ]
            }
          }
        ]
      },
      "key_link": {
        "type": "object",
        "properties": {
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when the link was created."
          },
          "updated_at": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp when the link was last updated."
          },
          "created_by": {
            "$ref": "#/components/schemas/user_preview",
            "description": "The user who created the link."
          },
          "updated_by": {
            "$ref": "#/components/schemas/user_preview",
            "description": "The user who last updated the link."
          },
          "account": {
            "$ref": "#/components/schemas/account",
            "description": "The account associated with the link."
          },
          "parent": {
            "$ref": "#/components/schemas/key_preview",
            "description": "The parent translation key in the link."
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/key_preview"
            },
            "description": "The child translation keys linked to the parent."
          }
        },
        "example": {
          "created_at": "2024-03-15T10:22:00Z",
          "updated_at": "2024-03-15T10:22:00Z",
          "created_by": {
            "id": "usr1a2b3c4d5e6f7a8b9c",
            "username": "jane.doe",
            "name": "Jane Doe",
            "gravatar_uid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
          },
          "updated_by": {
            "id": "usr1a2b3c4d5e6f7a8b9c",
            "username": "jane.doe",
            "name": "Jane Doe",
            "gravatar_uid": "a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4"
          },
          "account": {
            "id": "acct9z8y7x6w5v4u3t2s",
            "name": "Acme Translations",
            "slug": "acme-translations",
            "company": "Acme Corp",
            "created_at": "2023-01-10T08:00:00Z",
            "updated_at": "2023-06-01T12:00:00Z",
            "company_logo_url": "https://example.com/logos/acme.png"
          },
          "parent": {
            "id": "ijkl9012mnop3456ijkl9012",
            "name": "home.hero.title",
            "plural": false,
            "use_ordinal_rules": false,
            "data_type": "string",
            "tags": [
              "ui",
              "homepage"
            ]
          },
          "children": [
            {
              "id": "ijkl9012mnop3456ijkl9012mnop3456",
              "name": "home.hero.title_short",
              "plural": false,
              "use_ordinal_rules": false,
              "data_type": "string",
              "tags": [
                "ui",
                "homepage"
              ]
            },
            {
              "id": "abcd1234efgh5678abcd1234efgh5678",
              "name": "home.hero.title_long",
              "plural": false,
              "use_ordinal_rules": false,
              "data_type": "string",
              "tags": [
                "ui",
                "homepage"
              ]
            }
          ]
        }
      },
      "repo_sync": {
        "type": "object",
        "title": "repo_sync",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string",
            "nullable": true,
            "maxLength": 100,
            "description": "Optional custom display name for this repo sync. When null or blank, the sync is displayed using the associated project name.\n"
          },
          "project": {
            "$ref": "#/components/schemas/project_short"
          },
          "provider": {
            "type": "string"
          },
          "enabled": {
            "type": "boolean"
          },
          "auto_import": {
            "type": "boolean"
          },
          "repo_name": {
            "type": "string"
          },
          "pr_branch": {
            "type": "string",
            "description": "Branch used as the source of exports/PRs. May be `null` when the sync is configured to push directly to `base_branch`.\n",
            "nullable": true
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "last_import_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          },
          "last_export_at": {
            "type": "string",
            "format": "date-time",
            "nullable": true
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "project": {
            "id": "abcd1234cdef1234abcd1234cdef1234",
            "name": "My Android Project",
            "main_format": "xml",
            "created_at": "2015-01-28T09:52:53Z",
            "updated_at": "2015-01-28T09:52:53Z"
          },
          "provider": "github",
          "enabled": true,
          "auto_import": true,
          "repo_name": "organization/repo",
          "created_at": "2015-01-28T09:52:53Z",
          "last_import_at": "2015-01-28T09:52:53Z",
          "last_export_at": "2015-01-28T09:52:53Z"
        }
      },
      "repo_sync_event": {
        "type": "object",
        "title": "repo_sync_event",
        "properties": {
          "id": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "enum": [
              "import",
              "export"
            ]
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "enum": [
              "running",
              "success",
              "failure"
            ]
          },
          "pull_request_url": {
            "type": "string",
            "description": "URL of the pull request created on export"
          },
          "auto_import": {
            "type": "boolean",
            "description": "Whether the import was triggered by the repo push event"
          },
          "errors": {
            "description": "List of error messages, in case of failure",
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "example": {
          "type": "import",
          "created_at": "2015-01-28T09:52:53Z",
          "status": "failure",
          "auto_import": true,
          "errors": [
            "Error message 1",
            "Error message 2"
          ]
        }
      },
      "automation": {
        "type": "object",
        "title": "automation",
        "properties": {
          "id": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "inactive",
              "active",
              "error"
            ]
          },
          "trigger": {
            "type": "string",
            "enum": [
              "schedule",
              "upload"
            ]
          },
          "status_filters": {
            "description": "translation key statuses used to filter keys that are added to jobs",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "unverified",
                "untranslated",
                "ready_for_review"
              ]
            }
          },
          "project_id": {
            "type": "string"
          },
          "project_ids": {
            "type": "array",
            "description": "All project IDs the automation applies to. Returned alongside the singular `project_id` for backwards compatibility.",
            "items": {
              "type": "string"
            }
          },
          "job_template_id": {
            "type": "string"
          },
          "job_owner_id": {
            "type": "string",
            "description": "User ID of the job owner that newly created jobs are assigned to.",
            "nullable": true
          },
          "include_only_updated_locales": {
            "type": "boolean",
            "description": "When `true`, the automation only acts on locales that changed since its last run."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "cron_schedule": {
            "type": "string"
          },
          "time_zone": {
            "type": "string"
          },
          "account": {
            "$ref": "#/components/schemas/account"
          },
          "created_at": {
            "type": "string",
            "format": "date-time"
          },
          "updated_at": {
            "type": "string",
            "format": "date-time"
          }
        },
        "example": {
          "id": "abcd1234cdef1234abcd1234cdef1234",
          "name": "My First Automation",
          "status": "active",
          "trigger": "schedule",
          "status_filters": [
            "unverified",
            "untranslated",
            "ready_for_review"
          ],
          "project_id": "abcd1234cdef1234abcd1234cdef1234",
          "job_template_id": "abcd1234cdef1234abcd1234cdef1234",
          "tags": [
            "tag-1",
            "tag-2"
          ],
          "cron_schedule": "00 13 * * 1,2",
          "time_zone": "GMT",
          "account": "account",
          "created_at": "2021-06-28T09:52:53Z",
          "updated_at": "2021-06-28T09:52:53Z"
        }
      },
      "automation_event": {
        "type": "object",
        "title": "automation_event",
        "properties": {
          "id": {
            "type": "string",
            "description": "Unique identifier of the automation event."
          },
          "automation_id": {
            "type": "string",
            "description": "Identifier of the automation that produced this event."
          },
          "state": {
            "type": "string",
            "enum": [
              "success",
              "failure",
              "in_progress"
            ],
            "description": "Outcome of the automation run."
          },
          "triggered_by": {
            "type": "string",
            "enum": [
              "manual",
              "schedule",
              "upload",
              "upload_batch"
            ],
            "description": "What caused the automation to run."
          },
          "created_at": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp when the event was created."
          },
          "jobs_created": {
            "type": "integer",
            "description": "Number of jobs created during this automation run."
          },
          "job_ids": {
            "type": "array",
            "description": "Identifiers of the jobs created during this automation run.",
            "items": {
              "type": "string"
            }
          },
          "project": {
            "type": "object",
            "description": "The project associated with this automation event. Null when no project is set.",
            "properties": {
              "id": {
                "type": "string",
                "description": "Project identifier."
              },
              "name": {
                "type": "string",
                "description": "Project name."
              }
            }
          },
          "details": {
            "type": "string",
            "nullable": true,
            "description": "Error message describing the failure when state is `failure`; null otherwise."
          }
        },
        "example": {
          "id": "abcd1234ef56",
          "automation_id": "xyz9876abc123",
          "state": "success",
          "triggered_by": "schedule",
          "created_at": "2021-06-28T09:52:53Z",
          "jobs_created": 3,
          "job_ids": [
            "job1abc",
            "job2def"
          ],
          "project": {
            "id": "proj1234abcd",
            "name": "My Project"
          },
          "details": null
        }
      },
      "machine_translation_settings": {
        "type": "object",
        "properties": {
          "default_service": {
            "type": "string",
            "nullable": true,
            "description": "The default machine translation engine configured for the account. Returns \"microsoft_translate\" when no service has been explicitly configured. Supported values: language_ai_translate, aita_translate, microsoft_translate, google_translate, amazon_translate, intento_translate, gpt_translate.\n",
            "example": "google_translate"
          },
          "machine_translation_units_used": {
            "type": "integer",
            "description": "Number of machine translation characters consumed in the current billing period.",
            "example": 12500
          },
          "machine_translation_units_total": {
            "type": "integer",
            "description": "Total machine translation character quota granted for the current billing period.",
            "example": 1000000
          },
          "locale_provider_mappings": {
            "type": "array",
            "description": "Per-locale-pair provider overrides. When a matching mapping exists for a source/target locale pair, that provider takes precedence over the account default.\n",
            "items": {
              "$ref": "#/components/schemas/machine_translation_locale_provider_mapping"
            }
          }
        }
      },
      "machine_translation_locale_provider_mapping": {
        "type": "object",
        "properties": {
          "source_locale_code": {
            "type": "string",
            "description": "The locale code of the source language for this mapping.",
            "example": "en"
          },
          "target_locale_code": {
            "type": "string",
            "description": "The locale code of the target language for this mapping.",
            "example": "de"
          },
          "service": {
            "type": "string",
            "description": "The translation service applied when translating from source to target locale.",
            "example": "google_translate"
          }
        }
      }
    },
    "parameters": {
      "X-PhraseApp-OTP": {
        "in": "header",
        "name": "X-PhraseApp-OTP",
        "description": "Two-Factor-Authentication token (optional)",
        "required": false,
        "allowEmptyValue": false,
        "schema": {
          "type": "string"
        }
      },
      "If-Modified-Since": {
        "description": "Last modified condition, see [Conditional GET requests / HTTP Caching](/en/api/strings/pagination#conditional-get-requests-%2F-http-caching) (optional)",
        "explode": false,
        "in": "header",
        "name": "If-Modified-Since",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "If-None-Match": {
        "description": "ETag condition, see [Conditional GET requests / HTTP Caching](/en/api/strings/pagination#conditional-get-requests-%2F-http-caching) (optional)",
        "explode": false,
        "in": "header",
        "name": "If-None-Match",
        "required": false,
        "schema": {
          "type": "string"
        },
        "style": "simple"
      },
      "account_id": {
        "in": "path",
        "name": "account_id",
        "description": "Account ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "custom_metadata_data_type": {
        "in": "query",
        "name": "data_type",
        "description": "Data Type of Custom Metadata Property",
        "required": false,
        "schema": {
          "$ref": "#/components/schemas/custom_metadata_data_type"
        },
        "example": "boolean"
      },
      "query_account_id": {
        "in": "query",
        "name": "account_id",
        "description": "Filter by Account ID",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "query_automation_id": {
        "in": "query",
        "name": "automation_id",
        "description": "Filter events to a single automation by its ID.",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "repo_sync_id": {
        "in": "path",
        "name": "repo_sync_id",
        "description": "Repo Sync ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "space_id": {
        "in": "path",
        "name": "space_id",
        "description": "Space ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "team_id": {
        "in": "path",
        "name": "team_id",
        "description": "Team ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "project_id": {
        "in": "path",
        "name": "project_id",
        "description": "Project ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "key_id": {
        "in": "path",
        "name": "key_id",
        "description": "Translation Key ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "key_id_as_id": {
        "in": "path",
        "name": "id",
        "description": "Parent Translation Key ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "figma_attachment_id": {
        "in": "path",
        "name": "figma_attachment_id",
        "description": "Figma attachment ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "job_id": {
        "in": "path",
        "name": "job_id",
        "description": "Job ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "job_locale_id": {
        "in": "path",
        "name": "job_locale_id",
        "description": "Job Locale ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "job_template_id": {
        "in": "path",
        "name": "job_template_id",
        "description": "Job Template ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "job_template_locale_id": {
        "in": "path",
        "name": "job_template_locale_id",
        "description": "Job Template Locale ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "distribution_id": {
        "in": "path",
        "name": "distribution_id",
        "description": "Distribution ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "screenshot_id": {
        "in": "path",
        "name": "screenshot_id",
        "description": "Screenshot ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "translation_id": {
        "in": "path",
        "name": "translation_id",
        "description": "Translation ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "glossary_id": {
        "in": "path",
        "name": "glossary_id",
        "description": "Glossary ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "comment_id": {
        "in": "path",
        "name": "comment_id",
        "description": "Comment ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "term_id": {
        "in": "path",
        "name": "term_id",
        "description": "Term ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "locale_codes": {
        "in": "query",
        "name": "locale_codes",
        "description": "Locale Code",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "locale_id": {
        "in": "path",
        "name": "locale_id",
        "description": "Locale ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "locale_id_as_id": {
        "in": "path",
        "name": "id",
        "description": "Locale ID or locale name",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "id": {
        "in": "path",
        "name": "id",
        "description": "ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "name": {
        "in": "path",
        "name": "name",
        "description": "name",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "tag": {
        "in": "query",
        "name": "tag",
        "description": "tag",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "branch": {
        "name": "branch",
        "in": "query",
        "description": "Branch to use",
        "schema": {
          "type": "string"
        },
        "example": "my-feature-branch"
      },
      "page": {
        "in": "query",
        "name": "page",
        "description": "Page number",
        "required": false,
        "allowEmptyValue": false,
        "schema": {
          "type": "integer"
        },
        "example": 1
      },
      "per_page": {
        "in": "query",
        "name": "per_page",
        "description": "Limit on the number of objects to be returned, between 1 and 100. 25 by default",
        "required": false,
        "allowEmptyValue": false,
        "schema": {
          "type": "integer"
        },
        "example": 25
      },
      "webhook_id": {
        "in": "path",
        "name": "webhook_id",
        "description": "Webhook ID",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "response_status_codes": {
        "in": "query",
        "name": "response_status_codes",
        "description": "List of Response Status Codes",
        "required": false,
        "schema": {
          "type": "string"
        }
      },
      "q": {
        "description": "Specify a query to do broad search for keys by name (including wildcards).\n\nThe following qualifiers are also supported in the search term:\n\n- `ids:key_id,...` for queries on a comma-separated list of ids\n- `name:key_name` for text queries on exact key names - spaces, commas, and colons  need to be escaped with double backslashes\n- `tags:tag_name` to filter for keys with certain tags\n- `translated:{true|false}` for translation status (also requires `locale_id` to be specified)\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n- `unmentioned_in_upload:upload_id,...` to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in **all** uploads\n\n**Caution:** Query parameters with empty values will be treated as though they are not included in the request and will be ignored.\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
        "example": "mykey* translated:true",
        "name": "q",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "job_owner": {
        "description": "filter by user owning job",
        "example": "abcd1234cdef1234abcd1234cdef1234",
        "name": "owned_by",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "job_assignee": {
        "description": "filter by user assigned to job",
        "example": "abcd1234cdef1234abcd1234cdef1234",
        "name": "assigned_to",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "job_state": {
        "description": "filter by state of job; valid states are: `draft`, `in_progress`, `completed`",
        "example": "completed",
        "name": "state",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "job_updated_since": {
        "description": "filter by jobs updated since given date",
        "example": "2013-02-21T00:00:00Z",
        "name": "updated_since",
        "in": "query",
        "schema": {
          "type": "string"
        }
      },
      "include_annotations": {
        "in": "query",
        "name": "include_annotations",
        "description": "Include job-locale annotations in the response",
        "required": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      },
      "omit_translation_keys": {
        "in": "query",
        "name": "omit_translation_keys",
        "description": "Omit translation keys in the response to reduce payload size for bigger jobs",
        "required": false,
        "schema": {
          "type": "boolean",
          "default": false
        }
      }
    },
    "responses": {
      "200": {
        "description": "OK",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "201": {
        "description": "The resource has been created",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "202": {
        "description": "Accepted",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "204": {
        "description": "The resource was deleted successfully.",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "400": {
        "description": "Bad request. The request could not be parsed or a parameter failed validation. Verify the request body, the content type, and the parameter types, then retry.",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "401": {
        "description": "Unauthorized. Authentication failed because the access token is missing, expired, or invalid. Supply a valid access token and retry."
      },
      "403": {
        "description": "Forbidden. The credentials are valid but not permitted for this request: the access token may lack the required scope, the user may lack permission on the resource, or the account plan may not include the feature. Use a token with the required scope on an account and user that hold the necessary permissions.",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "404": {
        "description": "Not found. The requested resource does not exist or is not visible to the authenticated user. Verify the identifiers in the request path and that the token has access to them, then retry.",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "409": {
        "description": "Conflict. The request conflicts with the current state of the resource. Reconcile the conflicting state and retry.",
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "422": {
        "description": "Unprocessable entity. The request was well-formed but failed validation. The response body lists each offending field in the `errors` array, with its resource, field, and a human-readable message. Correct the listed fields and retry.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "properties": {
                "message": {
                  "type": "string"
                },
                "errors": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "resource": {
                        "type": "string"
                      },
                      "field": {
                        "type": "string"
                      },
                      "message": {
                        "type": "string"
                      }
                    }
                  }
                }
              },
              "example": {
                "message": "Validation Failed",
                "errors": [
                  {
                    "resource": "Resource",
                    "field": "name",
                    "message": "can't be blank"
                  }
                ]
              }
            }
          }
        },
        "headers": {
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "429": {
        "description": "Too many requests. The rate limit has been exceeded. Wait until the time indicated by the `X-Rate-Limit-Reset` response header before retrying.",
        "headers": {
          "X-Rate-Limit-Reason": {
            "$ref": "#/components/headers/X-Rate-Limit-Reason"
          },
          "X-Rate-Limit-Limit": {
            "$ref": "#/components/headers/X-Rate-Limit-Limit"
          },
          "X-Rate-Limit-Remaining": {
            "$ref": "#/components/headers/X-Rate-Limit-Remaining"
          },
          "X-Rate-Limit-Reset": {
            "$ref": "#/components/headers/X-Rate-Limit-Reset"
          }
        }
      },
      "503": {
        "description": "Server error"
      },
      "504": {
        "description": "Gateway timeout"
      }
    }
  },
  "paths": {
    "/accounts": {
      "get": {
        "summary": "List accounts",
        "description": "List all accounts the current user has access to.",
        "operationId": "accounts/list",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/account"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list accounts."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase accounts list \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{id}": {
      "get": {
        "summary": "Get a single account",
        "description": "Get details on a single account.",
        "operationId": "account/show",
        "tags": [
          "Accounts"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/account_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase accounts show \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/authorizations": {
      "get": {
        "summary": "List authorizations",
        "description": "List all your authorizations.",
        "operationId": "authorizations/list",
        "tags": [
          "Authorizations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/authorization"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list their authorizations."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/authorizations\" \\\n  -u USERNAME"
          },
          {
            "lang": "CLI v2",
            "source": "phrase authorizations list"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create an authorization",
        "description": "Create a new authorization.",
        "operationId": "authorization/create",
        "tags": [
          "Authorizations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/authorization_with_token"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/authorizations\" \\\n  -u USERNAME \\\n  -X POST \\\n  -d '{\"note\":\"My Deploy Script\",\"scopes\":[\"read\",\"write\"],\"expires_at\":\"2015-03-30T09:52:53Z\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase authorizations create \\\n--data '{\"note\": \"My Deploy Script\", \"scopes\": \"read,write\", \"expires_at\": \"2015-03-30T09:52:53Z\"}'"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "authorization/create/parameters",
                "required": [
                  "note"
                ],
                "properties": {
                  "note": {
                    "description": "A note to help you remember what the access is used for.",
                    "type": "string",
                    "example": "My Deploy Script"
                  },
                  "scopes": {
                    "description": "A list of scopes that the access can be used for.",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "read",
                        "write",
                        "orders.create",
                        "team.manage"
                      ]
                    },
                    "example": [
                      "read",
                      "write"
                    ]
                  },
                  "expires_at": {
                    "description": "Expiration date for the authorization token. Null means no expiration date (default).",
                    "type": "string",
                    "format": "date-time",
                    "example": "2015-03-30T09:52:53Z"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/authorizations/{id}": {
      "get": {
        "summary": "Get a single authorization",
        "description": "Get details on a single authorization.",
        "operationId": "authorization/show",
        "tags": [
          "Authorizations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/authorization"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this authorization."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/authorizations/:id\" \\\n  -u USERNAME"
          },
          {
            "lang": "CLI v2",
            "source": "phrase authorizations show \\\n--id <id>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update an authorization",
        "description": "Update an existing authorization.",
        "operationId": "authorization/update",
        "tags": [
          "Authorizations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/authorization"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this authorization."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/authorizations/:id\" \\\n  -u USERNAME \\\n  -X PATCH \\\n  -d '{\"note\":\"My Deploy Script\",\"scopes\":[\"read\",\"write\"],\"expires_at\":\"2015-03-30T09:52:53Z\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase authorizations update \\\n--id <id> \\\n--data '{\"note\": \"My Deploy Script\", \"scopes\": \"read,write\", \"expires_at\": \"2015-03-30T09:52:53Z\"}'"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "authorization/update/parameters",
                "properties": {
                  "note": {
                    "description": "A note to help you remember what the access is used for.",
                    "type": "string",
                    "example": "My Deploy Script"
                  },
                  "scopes": {
                    "description": "A list of scopes that the access can be used for.",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "read",
                        "write",
                        "orders.create",
                        "team.manage"
                      ]
                    },
                    "example": [
                      "read",
                      "write"
                    ]
                  },
                  "expires_at": {
                    "description": "Expiration date for the authorization token. Null means no expiration date (default).",
                    "type": "string",
                    "format": "date-time",
                    "example": "2015-03-30T09:52:53Z"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete an authorization",
        "description": "Delete an existing authorization. API calls using that token will stop working.",
        "operationId": "authorization/delete",
        "tags": [
          "Authorizations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this authorization."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/authorizations/:id\" \\\n  -u USERNAME \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase authorizations delete \\\n--id <id>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/automations/{automation_id}/events": {
      "get": {
        "summary": "List events for an automation",
        "description": "Returns the run history for a specific automation, newest-first.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation_events/list",
        "tags": [
          "Automation Events"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "success",
                "failure",
                "in_progress"
              ]
            },
            "description": "Filter events by outcome state. Unrecognized values are ignored."
          },
          {
            "name": "triggered_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "manual",
                "schedule",
                "upload",
                "upload_batch"
              ]
            },
            "description": "Filter events by what triggered the automation run. Unrecognized values are ignored."
          },
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter events by project ID. Accepts a single ID or a comma-separated list of IDs."
          },
          {
            "name": "project_ids",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Filter events by one or more project IDs."
          },
          {
            "name": "created_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01T00:00:00Z",
            "description": "Return only events created after this ISO 8601 timestamp. Returns 400 if the value is not a valid date-time."
          },
          {
            "name": "created_before",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01T00:00:00Z",
            "description": "Return only events created before this ISO 8601 timestamp. Returns 400 if the value is not a valid date-time."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/automation_event"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id/events\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          }
        ]
      }
    },
    "/accounts/{account_id}/automation_events": {
      "get": {
        "summary": "List automation events for an account",
        "description": "Returns the run history across all automations in the account, newest-first.\n\nUse `automation_id` to narrow results to a single automation. Use `project_id` or `project_ids` to narrow by project.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "account_automation_events/list",
        "tags": [
          "Automation Events"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "$ref": "#/components/parameters/query_automation_id"
          },
          {
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "success",
                "failure",
                "in_progress"
              ]
            },
            "description": "Filter events by outcome state. Unrecognized values are ignored."
          },
          {
            "name": "triggered_by",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "manual",
                "schedule",
                "upload",
                "upload_batch"
              ]
            },
            "description": "Filter events by what triggered the automation run. Unrecognized values are ignored."
          },
          {
            "name": "project_id",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Filter events by project ID. Accepts a single ID or a comma-separated list of IDs."
          },
          {
            "name": "project_ids",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "description": "Filter events by one or more project IDs."
          },
          {
            "name": "created_after",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01T00:00:00Z",
            "description": "Return only events created after this ISO 8601 timestamp. Returns 400 if the value is not a valid date-time."
          },
          {
            "name": "created_before",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01T00:00:00Z",
            "description": "Return only events created before this ISO 8601 timestamp. Returns 400 if the value is not a valid date-time."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/automation_event"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list automations in this account, or when the account does not have the Automation Job Creation feature."
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automation_events\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          }
        ]
      }
    },
    "/accounts/{account_id}/automations": {
      "get": {
        "summary": "List automations",
        "description": "List all automations for an account.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automations/list",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/automation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list automations in this account, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations?page=1&per_page=10\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations list \\\n--account_id <account_id> \\\n--page 1 \\\n--per_page 10 \\\n--access_token <token>"
          }
        ]
      },
      "post": {
        "summary": "Create an automation",
        "description": "Create a new automation.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation/create",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "name",
                  "project_ids",
                  "status_filters",
                  "trigger"
                ],
                "type": "object",
                "title": "automations/create/parameters",
                "properties": {
                  "name": {
                    "description": "name of the automation",
                    "example": "Scheduled Job Automation - Hourly",
                    "type": "string"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "schedule",
                      "upload"
                    ]
                  },
                  "project_ids": {
                    "description": "List of project IDs to associate with the automation.\nProviding more than one project ID requires the `advanced_job_automation`\nplan feature; accounts without this feature receive a 422 response with\nerror field `project_ids`.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "job_template_id": {
                    "description": "id of job template that the automation uses to create jobs from",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "status_filters": {
                    "description": "Translation states used when selecting keys for a job. \nStates are derived from associated translations, not the keys themselves. \nWhen review workflow is enabled, `ready_for_review` is internally treated as `translated`.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "unverified",
                        "untranslated",
                        "ready_for_review"
                      ]
                    }
                  },
                  "tags": {
                    "description": "used to filter which keys are added to jobs",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "myTag"
                    ]
                  },
                  "cron_schedule": {
                    "description": "along with time_zone, specifies when the scheduled automation is supposed to run",
                    "type": "string",
                    "example": "00 13 * * 1,2"
                  },
                  "time_zone": {
                    "description": "along with cron_schedule, specifies when the scheduled automation is supposed to run",
                    "type": "string",
                    "example": "GMT"
                  },
                  "job_owner_id": {
                    "description": "User ID of the job owner that newly created jobs are assigned to.\n",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "include_only_updated_locales": {
                    "description": "When `true`, the automation only acts on locales that changed since its last run. Defaults to `false`.\n",
                    "type": "boolean",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/automation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create automations in this account, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"Schedule Automation - Hourly\",\"trigger\":\"schedule\",\"project_ids\":[\"1\"],\"job_template_id\":\"2\",\"status_filters\":[\"untranslated\"],\"tag_ids\":[\"3\",\"4\"],\"cron_schedule\":\"00 13 * * 1,2\",\"time_zone\":\"GMT\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations create \\\n--account_id <account_id> \\\n--data '{\"name\":\"Schedule Automation - Hourly\",\"trigger\":\"schedule\",\"project_ids\":[\"1\"],\"job_template_id\":\"2\",\"status_filters\":[\"untranslated\"],\"tag_ids\":[\"3\",\"4\"],\"cron_schedule\":\"00 13 * * 1,2\",\"time_zone\":\"GMT\"}' \\\n--access_token <token>"
          }
        ]
      }
    },
    "/accounts/{account_id}/automations/{automation_id}": {
      "get": {
        "summary": "Get a single automation",
        "description": "Get details of a single automation.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation/show",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/automation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ]
      },
      "patch": {
        "summary": "Update an automation",
        "description": "Update an existing automation.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation/update",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "name",
                  "project_ids",
                  "status_filters",
                  "trigger"
                ],
                "type": "object",
                "title": "automations/create/parameters",
                "properties": {
                  "name": {
                    "description": "name of the automation",
                    "example": "Scheduled Job Automation - Hourly",
                    "type": "string"
                  },
                  "trigger": {
                    "type": "string",
                    "enum": [
                      "schedule",
                      "upload"
                    ]
                  },
                  "project_ids": {
                    "description": "List of project IDs to associate with the automation.\nProviding more than one project ID requires the `advanced_job_automation`\nplan feature; accounts without this feature receive a 422 response with\nerror field `project_ids`.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "job_template_id": {
                    "description": "id of job template that the automation uses to create jobs from",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "status_filters": {
                    "description": "translation key statuses used to filter keys that are added to jobs",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "unverified",
                        "untranslated",
                        "ready_for_review"
                      ]
                    }
                  },
                  "tags": {
                    "description": "used to filter which keys are added to jobs",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "myTag"
                    ]
                  },
                  "cron_schedule": {
                    "description": "along with time_zone, specifies when the scheduled automation is supposed to run",
                    "type": "string",
                    "example": "00 13 * * 1,2"
                  },
                  "time_zone": {
                    "description": "along with cron_schedule, specifies when the scheduled automation is supposed to run",
                    "type": "string",
                    "example": "GMT"
                  },
                  "job_owner_id": {
                    "description": "User ID of the job owner that newly created jobs are assigned to.\n",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "include_only_updated_locales": {
                    "description": "When `true`, the automation only acts on locales that changed since its last run.\n",
                    "type": "boolean",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/automation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"Schedule Automation - Weekly\",\"tag_ids\":[\"5\",\"6\"],time_zone:\"UTC\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"name\":\"Schedule Automation - Weekly\",\"tag_ids\":[\"5\",\"6\"],time_zone:\"UTC\"}' \\\n--access_token <token>"
          }
        ]
      },
      "delete": {
        "summary": "Destroy automation",
        "description": "Destroy an automation of an account.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation/delete",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ]
      }
    },
    "/accounts/{account_id}/automations/{automation_id}/activate": {
      "post": {
        "summary": "Activate an automation",
        "description": "Activate an automation.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation/activate",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/automation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to activate this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id/activate\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations activate \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ]
      }
    },
    "/accounts/{account_id}/automations/{automation_id}/deactivate": {
      "post": {
        "summary": "Deactivate an automation",
        "description": "Deactivate an automation.\n\nFor feature availability, see [Jobs (Strings)](https://support.phrase.com/hc/en-us/articles/5784100517788-Jobs-Strings).\n",
        "operationId": "automation/deactivate",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/automation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to deactivate this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id/deactivate\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations deactivate \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ]
      }
    },
    "/accounts/{account_id}/automations/{automation_id}/trigger": {
      "post": {
        "summary": "Trigger an automation",
        "description": "Trigger an automation.\n",
        "operationId": "automation/trigger",
        "tags": [
          "Automations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to trigger this automation, or when the account does not have the Automation Job Creation feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/automations/:id/trigger\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase automations trigger \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ]
      }
    },
    "/projects/{project_id}/blacklisted_keys": {
      "get": {
        "summary": "List blocked keys",
        "description": "List all rules for blocking keys for the given project.",
        "operationId": "blacklisted_keys/list",
        "tags": [
          "Blacklisted Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/blacklisted_key"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list blocked keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/blacklisted_keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase blacklisted_keys list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a blocked key",
        "description": "Create a new rule for blocking keys.",
        "operationId": "blacklisted_key/create",
        "tags": [
          "Blacklisted Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/blacklisted_key"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create blocked keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/blacklisted_keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"date.formats.*\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase blacklisted_keys create \\\n--project_id <project_id> \\\n--data '{\"name\":\"'date.formats.*'\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "blacklisted_key/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Blocked key name",
                    "type": "string",
                    "example": "date.formats.*"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/blacklisted_keys/{id}": {
      "get": {
        "summary": "Get a single blocked key",
        "description": "Get details on a single rule for blocking keys for a given project.",
        "operationId": "blacklisted_key/show",
        "tags": [
          "Blacklisted Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/blacklisted_key"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this blocked key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/blacklisted_keys/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase blacklisted_keys show \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a blocked key",
        "description": "Update an existing rule for blocking keys.",
        "operationId": "blacklisted_key/update",
        "tags": [
          "Blacklisted Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/blacklisted_key"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this blocked key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/blacklisted_keys/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"date.formats.*\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase blacklisted_keys update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"name\":\"'date.formats.*'\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "blacklisted_key/update/parameters",
                "properties": {
                  "name": {
                    "description": "Blocked key name",
                    "type": "string",
                    "example": "date.formats.*"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a blocked key",
        "description": "Delete an existing rule for blocking keys.",
        "operationId": "blacklisted_key/delete",
        "tags": [
          "Blacklisted Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this blocked key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/blacklisted_keys/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase blacklisted_keys delete \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/branches": {
      "get": {
        "summary": "List branches",
        "description": "List all branches of the current project.\n\nRequires the Branching feature to be enabled on the account.\n",
        "operationId": "branches/list",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/branch"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the user is not allowed to read branches in this project, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a branch",
        "description": "Create a new branch.\n\nBranch project provisioning runs asynchronously, so the newly created branch is returned in a transitional state (typically `creating_branch`) and only reaches `success` once the underlying project has been set up. Poll the branch resource until its `state` becomes `success` before performing further operations on it.\n\nRequires the Branching feature to be enabled on the account.\n\n*Note: Creating a new branch may take several minutes depending on the project size.*\n",
        "operationId": "branch/create",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/branch"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the user is not allowed to create branches in this project, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"my-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches create \\\n--project_id <project_id> \\\n--data '{\"name\":\"my-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "branch/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the branch",
                    "type": "string",
                    "example": "my-branch"
                  },
                  "base": {
                    "description": "Name of an existing branch to use as the base for the new branch.",
                    "type": "string",
                    "example": "parent-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/branches/{name}": {
      "get": {
        "summary": "Get a single branch",
        "description": "Get details on a single branch for a given project.\n\nRequires the Branching feature to be enabled on the account.\n",
        "operationId": "branch/show",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/branch"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the user is not allowed to read this branch, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches show \\\n--project_id <project_id> \\\n--name <name> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a branch",
        "description": "Update an existing branch. Only the branch name can be changed.\n\nRequires the Branching feature to be enabled on the account.\n",
        "operationId": "branch/update",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/branch"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the user is not allowed to update this branch, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"my-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches update \\\n--project_id <project_id> \\\n--name <name> \\\n--data '{\"name\":\"my-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "branch/update/parameters",
                "properties": {
                  "name": {
                    "description": "Name of the branch",
                    "type": "string",
                    "example": "my-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a branch",
        "description": "Delete an existing branch.\n\nA branch cannot be deleted while it still has open jobs or open translation orders attached to its branch project — in that case the request is rejected with `409 Conflict`. A branch whose current `state` does not allow deletion (for example, while a merge or sync is in progress) is rejected with `422 Unprocessable Entity`.\n\nRequires the Branching feature to be enabled on the account.\n",
        "operationId": "branch/delete",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the user is not allowed to delete this branch, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409",
            "description": "Conflict. The branch has open jobs or open translation orders. The response body lists the blockers, for example `{\"errors\":[\"open_jobs\",\"open_orders\"]}`. Close or complete the listed resources before retrying."
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches delete \\\n--project_id <project_id> \\\n--name <name> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/branches/{name}/merge": {
      "patch": {
        "summary": "Merge a branch",
        "description": "Merge an existing branch back into its base branch.\n\nThe merge runs asynchronously. The branch transitions to `merging_branch` and settles in `merged`, `merge_error`, or `merge_conflict` once the background job completes; the response body for this request is empty. Poll the branch resource to observe the final state.\n\nA branch cannot be merged while it still has open jobs or open translation orders attached to its branch project — in that case the request is rejected with `409 Conflict`. A branch whose current `state` does not allow a merge is rejected with `422 Unprocessable Entity`.\n\nRequires the Branching feature to be enabled on the account.\n\n*Note: Merging a branch may take several minutes depending on diff size.*\n",
        "operationId": "branch/merge",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "200": {
            "description": "OK. The merge has been scheduled. The response body is empty; observe progress by polling the branch resource.",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the user is not allowed to merge this branch, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409",
            "description": "Conflict. The branch has open jobs or open translation orders. The response body lists the blockers, for example `{\"errors\":[\"open_jobs\",\"open_orders\"]}`. Close or complete the listed resources before retrying."
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name/merge\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"strategy\":\"use_main\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches merge \\\n--project_id <project_id> \\\n--name <name> \\\n--data '{\"strategy\":\"use_main\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "branch/merge/parameters",
                "properties": {
                  "strategy": {
                    "description": "Conflict resolution strategy applied when the branch and its base have diverged. `use_main` keeps the values from the base branch; `use_branch` keeps the values from the branch being merged.\n",
                    "type": "string",
                    "enum": [
                      "use_main",
                      "use_branch"
                    ],
                    "example": "use_main"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{project_id}/branches/{name}/sync": {
      "patch": {
        "summary": "Sync a branch",
        "description": "Pull changes from the base branch into this branch, applying the chosen conflict-resolution strategy.\n\nThe sync runs asynchronously. The branch transitions to `syncing_branch` and settles back into `success` (or `merge_conflict` / `branch_error`) once the background job completes; the response body for this request is empty. Poll the branch resource to observe the final state.\n\nOnly branches created with the newer branching system can be synced. Requests against branches from the older system, or against branches whose current state does not allow a sync, are rejected with `422 Unprocessable Entity` and an empty body.\n\nRequires the Branching feature to be enabled on the account.\n",
        "operationId": "branch/sync",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "200": {
            "description": "OK. The sync has been scheduled. The response body is empty; observe progress by polling the branch resource.",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the user is not allowed to sync this branch, or when the Branching feature is not available on the account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name/sync\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"strategy\":\"use_main\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches sync \\\n--project_id <project_id> \\\n--name <name> \\\n--data '{\"strategy\":\"use_main\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "branch/sync/parameters",
                "properties": {
                  "strategy": {
                    "description": "Conflict resolution strategy applied when the branch and its base have diverged. `use_main` keeps the values from the base branch; `use_branch` keeps the values from this branch.\n",
                    "type": "string",
                    "enum": [
                      "use_main",
                      "use_branch"
                    ],
                    "example": "use_main"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{project_id}/branches/{name}/compare": {
      "get": {
        "summary": "Compare branches",
        "description": "Compare branch with main branch.\n\n*Note: Comparing a branch may take several minutes depending on the project size. Consider using the `POST /compare` endpoint for creating comparison asynchronously.*\n",
        "operationId": "branch/compare",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "description": "Name of the branch",
            "example": "my-branch",
            "name": "name",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/branch_comparison"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409",
            "description": "A comparison is already in progress for this branch."
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name/compare?name=my-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches compare \\\n--project_id <project_id> \\\n--name <name> \\\n--name my-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create comparison (async.)",
        "description": "Create a branch comparison asynchronously.\n",
        "operationId": "branch/comparison/create",
        "tags": [
          "Branches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "202": {
            "$ref": "#/components/responses/202"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "409": {
            "$ref": "#/components/responses/409",
            "description": "An asynchronous comparison is already in progress for this branch."
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/branches/:name/compare\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"direction\":\"merge\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase branches create_comparison \\\n--project_id <project_id> \\\n--name <name> \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "branch/create_comparison/parameters",
                "properties": {
                  "direction": {
                    "description": "direction of comparison, possible values are sync or merge (only for v2 branches)",
                    "type": "string",
                    "example": "merge",
                    "default": "merge"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{project_id}/checks/issues": {
      "get": {
        "summary": "List check issues",
        "description": "**Note:** The Checks API is still in development and might change in subsequent releases.\n\nList check issues for the given project. Results can be filtered by locale, check name, and state.",
        "operationId": "check_issues/list",
        "tags": [
          "Checks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "Filter by state of the check issue. Can be one of: `active`, `solved`, `dismissed`, `all`. Defaults to `active`.",
            "name": "state",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "default": "active",
              "enum": [
                "active",
                "solved",
                "dismissed",
                "all"
              ]
            },
            "example": "active"
          },
          {
            "description": "Filter by one or more locale IDs.",
            "name": "locale_ids",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "example": [
                "abcd1234cdef1234abcd1234cdef1234"
              ]
            }
          },
          {
            "description": "Filter by one or more check names. Valid values are:\n\n- `translation_content_length` — the translation exceeds the maximum character limit configured for the key.\n- `translation_placeholder_usage` — the translation is missing placeholders present in the source, or contains unexpected ones.\n- `translation_glossary_usage` — the translation does not follow the glossary term translations.",
            "name": "check_names",
            "in": "query",
            "required": false,
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "translation_content_length",
                  "translation_placeholder_usage",
                  "translation_glossary_usage"
                ]
              },
              "example": [
                "translation_placeholder_usage"
              ]
            }
          },
          {
            "name": "created_since",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "example": "2026-01-01T12:00:00Z",
            "description": "Return only check issues created on or after this ISO 8601 datetime. Returns 400 if the value is not a valid date-time."
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/check_issue"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/checks/issues\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase check_issues list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ]
      }
    },
    "/projects/{project_id}/checks/issues/{id}/dismiss": {
      "patch": {
        "summary": "Dismiss a check issue",
        "description": "**Note:** The Checks API is still in development and might change in subsequent releases.\n\nMark a check issue as dismissed so it no longer appears on the list of active check issues.",
        "operationId": "check_issue/dismiss",
        "tags": [
          "Checks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Check Issue ID",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/check_issue"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/checks/issues/:id/dismiss\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH"
          },
          {
            "lang": "CLI v2",
            "source": "phrase check_issues dismiss \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ]
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{comment_id}/reactions": {
      "get": {
        "summary": "List reactions",
        "description": "List all reactions for a comment.",
        "operationId": "reactions/list",
        "tags": [
          "Comment Reactions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/comment_reaction"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/reactions\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase reactions list \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      },
      "post": {
        "summary": "Create a reaction",
        "description": "Create a new reaction for a comment.",
        "operationId": "reaction/create",
        "tags": [
          "Comment Reactions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "specify the emoji for the reaction",
            "example": "👍",
            "name": "emoji",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment_reaction"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/reactions/\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\", \"emoji\": \"👍\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase reactions create \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"emoji\": \"👍\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{comment_id}/reactions/{id}": {
      "get": {
        "summary": "Get a single reaction",
        "description": "Get details on a single reaction.",
        "operationId": "reaction/show",
        "tags": [
          "Comment Reactions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment_reaction"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/reactions/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase reactions show \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      },
      "delete": {
        "summary": "Delete a reaction",
        "description": "Delete an existing reaction.",
        "operationId": "reaction/delete",
        "tags": [
          "Comment Reactions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/reactions/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase reactions delete \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{comment_id}/replies": {
      "get": {
        "summary": "List replies",
        "description": "List all replies for a comment.",
        "operationId": "replies/list",
        "tags": [
          "Comment Replies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Search query for comment messages",
            "example": "Some comment content",
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Specify the filter for the comments",
            "name": "filters",
            "in": "query",
            "schema": {
              "type": "array",
              "example": [
                "read",
                "unread"
              ],
              "items": {
                "type": "string"
              }
            }
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "name": "order",
            "in": "query",
            "example": "desc",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/comment"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/replies?branch=my-feature-branch&filters=unread&query=something&order=desc\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase replies list \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--branch \"my-feature-branch\" \\\n--filters unread \\\n--order desc \\\n--query \"Some comment content\" \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.10"
      },
      "post": {
        "summary": "Create a reply",
        "description": "Create a new reply for a comment.",
        "operationId": "reply/create",
        "tags": [
          "Comment Replies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "comment/create/parameters",
                "required": [
                  "message"
                ],
                "properties": {
                  "message": {
                    "description": "Reply message body",
                    "type": "string",
                    "example": "Some message..."
                  },
                  "branch": {
                    "description": "Specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/replies\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\", \"message\":\"Some message...\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase replies create \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"message\": \"Some message...\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.10"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{comment_id}/replies/{id}": {
      "get": {
        "summary": "Get a single reply",
        "description": "Get details on a single reply.",
        "operationId": "reply/show",
        "tags": [
          "Comment Replies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/replies/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase replies show \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.10"
      },
      "delete": {
        "summary": "Delete a reply",
        "description": "Delete an existing reply.",
        "operationId": "reply/delete",
        "tags": [
          "Comment Replies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/replies/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase replies delete \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.10"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{comment_id}/replies/{id}/mark_as_read": {
      "patch": {
        "summary": "Mark a reply as read",
        "description": "Mark a reply as read.",
        "operationId": "reply/mark_as_read",
        "tags": [
          "Comment Replies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/replies/:id/mark_as_read\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase replies mark_as_read \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.10"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{comment_id}/replies/{id}/mark_as_unread": {
      "patch": {
        "summary": "Mark a reply as unread",
        "description": "Mark a reply as unread.",
        "operationId": "reply/mark_as_unread",
        "tags": [
          "Comment Replies"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/comment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:comment_id/replies/:id/mark_as_unread\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase replies mark_as_unread \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--comment_id <comment_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.10"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments": {
      "get": {
        "summary": "List comments",
        "description": "List all comments for a key.",
        "operationId": "comments/list",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Search query for comment messages",
            "example": "Some comment content",
            "name": "query",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Search comments by their assigned locales",
            "example": [
              "someId"
            ],
            "name": "locale_ids",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "description": "Specify the filter for the comments. Supported values are `read` and `unread`. Combine both to return all comments (read + unread) without filtering.",
            "name": "filters",
            "in": "query",
            "schema": {
              "type": "array",
              "example": [
                "read",
                "unread"
              ],
              "items": {
                "type": "string",
                "enum": [
                  "read",
                  "unread"
                ]
              }
            }
          },
          {
            "description": "Order direction. Defaults to `desc`. Values other than `asc` and `desc` fall back to `desc`.",
            "name": "order",
            "in": "query",
            "example": "desc",
            "schema": {
              "type": "string",
              "enum": [
                "asc",
                "desc"
              ]
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/comment"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list comments on this key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments?branch=my-feature-branch&filters=unread&query=something&locale_ids=someId&order=desc\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments list \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--branch \"my-feature-branch\" \\\n--filters unread \\\n--order desc \\\n--query \"Some comment content\" \\\n--locale_ids someId \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a comment",
        "description": "Create a new comment for a key.",
        "operationId": "comment/create",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create comments on this key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\", \"message\":\"Some message...\", \"locale_ids\": [\"someId\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments create \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"message\": \"Some message...\", \"locale_ids\": [\"someId\"]}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "comment/create/parameters",
                "required": [
                  "message"
                ],
                "properties": {
                  "message": {
                    "description": "Comment message",
                    "type": "string",
                    "example": "Some message..."
                  },
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_ids": {
                    "description": "specify the locales for the comment",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "someId",
                      "someOtherId"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{id}": {
      "get": {
        "summary": "Get a single comment",
        "description": "Get details on a single comment.",
        "operationId": "comment/show",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this comment."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments show \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a comment",
        "description": "Update an existing comment.",
        "operationId": "comment/update",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this comment."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"message\":\"Some message...\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments update \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"message\": \"Some message...\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "comment/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "message": {
                    "description": "Comment message",
                    "type": "string",
                    "example": "Some message..."
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a comment",
        "description": "Delete an existing comment.",
        "operationId": "comment/delete",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this comment."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments delete \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/{key_id}/comments/{id}/read": {
      "patch": {
        "summary": "Mark a comment as read",
        "description": "Mark a comment as read.",
        "operationId": "comment/mark/read",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to mark this comment as read."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:id/read\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments mark \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "comment/mark/read/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Mark a comment as unread",
        "description": "Mark a comment as unread.",
        "operationId": "comment/mark/unread",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to mark this comment as unread."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:id/read\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments mark \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "get": {
        "summary": "Check if comment is read",
        "description": "Check if comment was marked as read. Returns 204 if read, 404 if unread.",
        "operationId": "comment/mark/check",
        "tags": [
          "Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this comment."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/comments/:id/read?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase comments mark \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/custom_metadata/properties": {
      "get": {
        "summary": "List properties",
        "description": "List all custom metadata properties for an account.\n\nThis endpoint is only available to accounts with advanced plans or above.\n",
        "operationId": "custom_metadata_properties/list",
        "tags": [
          "Custom Metadata"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/custom_metadata_data_type"
          },
          {
            "description": "id of project that the properties belong to",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "name": "project_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "query to find a property by name",
            "example": "character_name",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort criteria. Can be one of: name, data_type, created_at.",
            "example": "updated_at",
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "example": "desc",
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/custom_metadata_property"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/custom_metadata/properties?data_type=boolean&project_id=1&page=1&per_page=10&sort=created_at&order=desc\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase custom_metadata_properties list \\\n--account_id <account_id> \\\n--data_type boolean \\\n--project_id 1 \\\n--page 1 \\\n--per_page 10 \\\n--sort created_at \\\n--order desc \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      },
      "post": {
        "summary": "Create a property",
        "description": "Create a new custom metadata property.",
        "operationId": "custom_metadata_property/create",
        "tags": [
          "Custom Metadata"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "name",
                  "data_type"
                ],
                "type": "object",
                "title": "custom_metadata_properties/create/parameters",
                "properties": {
                  "name": {
                    "description": "name of the property",
                    "example": "Fruit",
                    "type": "string"
                  },
                  "data_type": {
                    "$ref": "#/components/schemas/custom_metadata_data_type"
                  },
                  "project_ids": {
                    "description": "ids of projects that the property belongs to",
                    "type": "array",
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "abcd1234cdef1234abcd1234cdef4321"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "description": {
                    "description": "description of property",
                    "example": "A healthy snack for all ages",
                    "type": "string"
                  },
                  "value_options": {
                    "description": "value options of property (only applies to single or multi select properties)",
                    "example": [
                      "Apple",
                      "Banana",
                      "Coconut"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/custom_metadata_property"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/custom_metadata/properties\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"Fruit\",\"data_type\":\"multi_select\",\"description\":\"A healthy snack for all ages\",\"project_ids\":[\"1\",\"2\",\"3\"],\"value_options\":[\"apple\",\"banana\",\"coconut\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase custom_metadata_properties create \\\n--account_id <account_id> \\\n--data '{\"name\":\"Fruit\",\"data_type\":\"multi_select\",\"description\":\"A healthy snack for all ages\",\"project_ids\":[\"1\",\"2\",\"3\"],\"value_options\":[\"apple\",\"banana\",\"coconut\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      }
    },
    "/accounts/{account_id}/custom_metadata/properties/{id}": {
      "get": {
        "summary": "Get a single property",
        "description": "Get details of a single custom property.",
        "operationId": "custom_metadata_property/show",
        "tags": [
          "Custom Metadata"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/custom_metadata_property"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/custom_metadata/properties/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase custom_metadata_properties show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      },
      "patch": {
        "summary": "Update a property",
        "description": "Update an existing custom metadata property.",
        "operationId": "custom_metadata_property/update",
        "tags": [
          "Custom Metadata"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "custom_metadata_properties/update/parameters",
                "properties": {
                  "name": {
                    "description": "name of the property",
                    "example": "Fruit",
                    "type": "string"
                  },
                  "project_ids": {
                    "description": "ids of projects that the property belongs to",
                    "type": "array",
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "abcd1234cdef1234abcd1234cdef4321"
                    ],
                    "items": {
                      "type": "string"
                    }
                  },
                  "description": {
                    "description": "description of property",
                    "example": "A healthy snack for all ages",
                    "type": "string"
                  },
                  "value_options": {
                    "description": "value options of property (only applies to single or multi select properties)",
                    "example": [
                      "Apple",
                      "Banana",
                      "Coconut"
                    ],
                    "type": "array",
                    "items": {
                      "type": "string"
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/custom_metadata_property"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/custom_metadata/properties/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"Fruit\",\"description\":\"A healthy snack for all ages\",\"project_ids\":[\"1\",\"2\",\"3\"],\"value_options\":[\"apple\",\"banana\",\"coconut\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase custom_metadata_properties update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"name\":\"Fruit\",\"description\":\"A healthy snack for all ages\",\"project_ids\":[\"1\",\"2\",\"3\"],\"value_options\":[\"apple\",\"banana\",\"coconut\"]}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      },
      "delete": {
        "summary": "Destroy property",
        "description": "Destroy a custom metadata property of an account.\n\nThis endpoint is only available to accounts with advanced plans or above.\n",
        "operationId": "custom_metadata_properties/delete",
        "tags": [
          "Custom Metadata"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/custom_metadata/properties/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase custom_metadata_properties delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9"
      }
    },
    "/accounts/{account_id}/distributions": {
      "get": {
        "summary": "List distributions",
        "description": "List all distributions for the given account.",
        "operationId": "distributions/list",
        "tags": [
          "Distributions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/distribution"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list distributions in this account, or when the account does not have the Over-the-Air feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase distributions list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a distribution",
        "description": "Create a new distribution.",
        "operationId": "distribution/create",
        "tags": [
          "Distributions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/distribution_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create distributions in this account, or when the account does not have the Over-the-Air feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"My Android Distribution\",\"project_id\":\"abcd1234abcd1234abcd1234\",\"platforms\":[\"android\",\"ios\"],\"locale_ids\":[\"fff565db236400772368235db2c6117e,abcd1234cdef1234abcd1234cdef1234\"],\"format_options\":\"{xml:{enclose_in_cdata:'1'}}\",\"fallback_to_non_regional_locale\":true,\"fallback_to_default_locale\":true,\"use_last_reviewed_version\":true}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase distributions create \\\n--account_id <account_id> \\\n--data '{\"name\": \"My Android Distribution\", \"project_id\":\"abcd1234abcd1234abcd1234\", \"platforms\": \"android,ios\", \"locale_ids\":[\"fff565db236400772368235db2c6117e,abcd1234cdef1234abcd1234cdef1234\"], \"format_options\": \"{xml:{enclose_in_cdata:'1'}}\", \"fallback_to_non_regional_locale\":true, \"fallback_to_default_locale\":true, \"use_last_reviewed_version\":true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "distribution/create/parameters",
                "required": [
                  "name",
                  "project_id"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the distribution",
                    "type": "string",
                    "example": "My Android Distribution"
                  },
                  "project_id": {
                    "description": "Project id the distribution should be assigned to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234"
                  },
                  "platforms": {
                    "description": "List of platforms the distribution should support.\nValid values are:\n* `android`\n* `ios`\n* `flutter`\n* `i18next`\n* `rails`",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "ios"
                    ]
                  },
                  "locale_ids": {
                    "description": "List of locale ids that will be part of distribution releases",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "fff565db236400772368235db2c6117e"
                    ]
                  },
                  "format_options": {
                    "description": "Additional formatting and render options. Only `enclose_in_cdata` is available for platform `android`.\n",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": "{xml:{enclose_in_cdata:'1'}}"
                  },
                  "fallback_locales_enabled": {
                    "description": "Use fallback locale if there is no translation in the current locale.",
                    "type": "boolean",
                    "example": true
                  },
                  "fallback_to_non_regional_locale": {
                    "description": "Indicates whether to fallback to non regional locale when locale can not be found",
                    "type": "boolean",
                    "example": true
                  },
                  "fallback_to_default_locale": {
                    "description": "Indicates whether to fallback to projects default locale when locale can not be found",
                    "type": "boolean",
                    "example": true
                  },
                  "use_last_reviewed_version": {
                    "description": "Use last reviewed instead of latest translation in a project",
                    "type": "boolean",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/distributions/{id}": {
      "get": {
        "summary": "Get a single distribution",
        "description": "Get details on a single distribution.",
        "operationId": "distribution/show",
        "tags": [
          "Distributions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/distribution_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this distribution, or when the account does not have the Over-the-Air feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase distributions show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a distribution",
        "description": "Update an existing distribution.",
        "operationId": "distribution/update",
        "tags": [
          "Distributions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/distribution_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this distribution, or when the account does not have the Over-the-Air feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"My Android Distribution\",\"project_id\":\"abcd1234abcd1234abcd1234\",\"platforms\":[\"android\",\"ios\"],\"locale_ids\":[\"fff565db236400772368235db2c6117e,abcd1234cdef1234abcd1234cdef1234\"],\"format_options\":\"{xml:{enclose_in_cdata:'1'}}\",\"fallback_to_non_regional_locale\":true,\"fallback_to_default_locale\":true,\"use_last_reviewed_version\":true}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase distributions update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"name\": \"My Android Distribution\", \"project_id\":\"abcd1234abcd1234abcd1234\", \"platforms\": \"android,ios\", \"locale_ids\": \"fff565db236400772368235db2c6117e,abcd1234cdef1234abcd1234cdef1234\", \"format_options\": \"{xml:{enclose_in_cdata:'1'}}\", \"fallback_to_non_regional_locale\":true, \"fallback_to_default_locale\":true, \"use_last_reviewed_version\":true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "distribution/update/parameters",
                "properties": {
                  "name": {
                    "description": "Name of the distribution",
                    "type": "string",
                    "example": "My Android Distribution"
                  },
                  "project_id": {
                    "description": "Project id the distribution should be assigned to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234"
                  },
                  "platforms": {
                    "description": "List of platforms the distribution should support.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "ios"
                    ]
                  },
                  "locale_ids": {
                    "description": "List of locale ids that will be part of distribution releases",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "fff565db236400772368235db2c6117e"
                    ]
                  },
                  "format_options": {
                    "description": "Additional formatting and render options. Only `enclose_in_cdata` is available for platform `android`.\n",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": "{xml:{enclose_in_cdata:'1'}}"
                  },
                  "fallback_locales_enabled": {
                    "description": "Use fallback locale if there is no translation in the current locale.",
                    "type": "boolean",
                    "example": true
                  },
                  "fallback_to_non_regional_locale": {
                    "description": "Indicates whether to fallback to non regional locale when locale can not be found",
                    "type": "boolean",
                    "example": true
                  },
                  "fallback_to_default_locale": {
                    "description": "Indicates whether to fallback to projects default locale when locale can not be found",
                    "type": "boolean",
                    "example": true
                  },
                  "use_last_reviewed_version": {
                    "description": "Use last reviewed instead of latest translation in a project",
                    "type": "boolean",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a distribution",
        "description": "Delete an existing distribution.",
        "operationId": "distribution/delete",
        "tags": [
          "Distributions"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this distribution, or when the account does not have the Over-the-Air feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase distributions delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/documents": {
      "get": {
        "summary": "List documents",
        "description": "Returns all documents in a project that the authenticated user has read access to. A Document is a source file — an HTML or DOCX file — that has been uploaded to Phrase Strings and whose content is segmented into translation keys for localization.\n\nUse this endpoint to enumerate documents before downloading, previewing, or triggering translation workflows for individual files.\n\nThe q parameter performs a prefix match on the document name (case-insensitive). For example, passing q=invoice returns documents whose names begin with \"invoice\" but not documents containing \"invoice\" elsewhere in the name.\n",
        "operationId": "documents/list",
        "tags": [
          "Documents"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "Filter documents by name prefix. Returns documents whose name starts with the given value (case-insensitive).",
            "example": "invoice",
            "name": "q",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "title": "document",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "example": {
                      "id": "abcd1234cdef1234abcd1234cdef1234",
                      "name": "email.html",
                      "created_at": "2015-01-28T09:52:53Z",
                      "updated_at": "2015-01-28T09:52:53Z"
                    }
                  }
                },
                "examples": {
                  "success": {
                    "summary": "Example document list response",
                    "value": [
                      {
                        "id": "abcd1234cdef1234abcd1234cdef1234",
                        "name": "email.html",
                        "created_at": "2015-01-28T09:52:53Z",
                        "updated_at": "2015-03-04T11:22:30Z"
                      },
                      {
                        "id": "ef012345ef012345ef012345ef012345",
                        "name": "invoice.docx",
                        "created_at": "2015-02-10T14:30:00Z",
                        "updated_at": "2015-03-01T08:00:00Z"
                      }
                    ]
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "CLI v2",
            "source": "phrase documents list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/documents/{id}": {
      "delete": {
        "summary": "Delete document",
        "description": "Permanently deletes a document and all of its associated translation segments from the project. Use this when you want to remove a document that is no longer needed; the deletion cannot be reversed and all associated segments will be lost.\n",
        "operationId": "document/delete",
        "tags": [
          "Documents"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "$ref": "#/components/responses/200"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "CLI v2",
            "source": "phrase documents delete \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/figma_attachments": {
      "get": {
        "summary": "List Figma attachments",
        "description": "List all Figma attachments for the given project",
        "operationId": "figma_attachments/list",
        "tags": [
          "Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/figma_attachment"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list Figma attachments in this project, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments?branch=my-feature-branch\" \\\n  -X GET \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachments list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      },
      "post": {
        "summary": "Create a Figma attachment",
        "description": "Create a new Figma attachment.",
        "operationId": "figma_attachment/create",
        "tags": [
          "Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/figma_attachment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create Figma attachments in this project, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F branch=my-feature-branch \\\n  -F url=https://figma.com/file/xxxxx/sample \\"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachment create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"url\":\"https://figma.com/file/xxxxx/sample\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "figma_attachment/create/parameters",
                "required": [
                  "url"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "url": {
                    "description": "Figma file url",
                    "type": "string",
                    "example": "https://figma.com/file/xxxxx/sample"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.13"
      }
    },
    "/projects/{project_id}/figma_attachments/{id}": {
      "get": {
        "summary": "Get a single Figma attachment",
        "description": "Get details on a single Figma attachment for a given project.",
        "operationId": "figma_attachment/show",
        "tags": [
          "Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/figma_attachment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this Figma attachment, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments/:id?branch=my-feature-branch\" \\\n  -X GET \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachment show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      },
      "patch": {
        "summary": "Update a Figma attachment",
        "description": "Update an existing Figma attachment.",
        "operationId": "figma_attachment/update",
        "tags": [
          "Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/figma_attachment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this Figma attachment, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -F branch=my-feature-branch \\\n  -F url=https://figma.com/file/xxxxx/sample \\"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachment update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"url\":\"https://figma.com/file/xxxxx/sample\" }' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "figma_attachment/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "url": {
                    "description": "Figma file url",
                    "type": "string",
                    "example": "https://figma.com/file/xxxxx/sample"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.13"
      },
      "delete": {
        "summary": "Delete a Figma attachment",
        "description": "Delete an existing Figma attachment.",
        "operationId": "figma_attachment/delete",
        "tags": [
          "Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this Figma attachment, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachment delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      }
    },
    "/formats": {
      "get": {
        "summary": "List formats",
        "description": "Returns all file formats that Phrase Strings supports. Use the api_name value\nfrom each format as the file_format parameter when uploading or downloading\nlocale files. Not every format supports both directions: check the importable\nand exportable fields before using a format in a workflow. This endpoint does\nnot require authentication and is not subject to rate limiting.\n",
        "operationId": "formats/list",
        "tags": [
          "Formats"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/format"
                  }
                },
                "examples": {
                  "default": {
                    "value": [
                      {
                        "name": "Ruby/Rails YAML",
                        "api_name": "yml",
                        "description": "YAML file format for use with Ruby/Rails applications",
                        "extension": "yml",
                        "default_encoding": "UTF-8",
                        "importable": true,
                        "exportable": true,
                        "default_file": "./config/locales/<locale_name>.yml",
                        "renders_default_locale": false,
                        "includes_locale_information": false
                      },
                      {
                        "name": "Simple JSON",
                        "api_name": "simple_json",
                        "description": "A flat key/value JSON format",
                        "extension": "json",
                        "default_encoding": "UTF-8",
                        "importable": true,
                        "exportable": true,
                        "default_file": "./config/locales/<locale_name>.json",
                        "renders_default_locale": false,
                        "includes_locale_information": false
                      }
                    ]
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/formats\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase formats list \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/glossaries": {
      "get": {
        "summary": "List term bases",
        "description": "List all term bases (previously: glossaries) the current user has access to.",
        "operationId": "glossaries/list",
        "tags": [
          "Glossaries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/glossary"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list glossaries in this account, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossaries list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a term base",
        "description": "Create a new term base (previously: glossary).",
        "operationId": "glossary/create",
        "tags": [
          "Glossaries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create glossaries in this account, when the account does not have the Glossary feature, or when `space_ids` are supplied without the Spaces feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"My term base\",\"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossaries create \\\n--account_id <account_id> \\\n--data '{\"name\":\"My term base\", \"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"space_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "glossary/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the glossary",
                    "type": "string",
                    "example": "My glossary"
                  },
                  "project_ids": {
                    "description": "List of project ids the glossary should be assigned to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "space_ids": {
                    "description": "List of space ids the glossary should be assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/glossaries/{id}": {
      "get": {
        "summary": "Get a single term base",
        "description": "Get details on a single term base (previously: glossary).",
        "operationId": "glossary/show",
        "tags": [
          "Glossaries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this glossary, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossaries show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a term base",
        "description": "Update an existing term base (previously: glossary).",
        "operationId": "glossary/update",
        "tags": [
          "Glossaries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this glossary, when the account does not have the Glossary feature, or when `space_ids` are supplied without the Spaces feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"My glossary\",\"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossaries update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"name\": \"My glossary\", \"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"space_ids\": \"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "glossary/update/parameters",
                "properties": {
                  "name": {
                    "description": "Name of the glossary",
                    "type": "string",
                    "example": "My glossary"
                  },
                  "project_ids": {
                    "description": "List of project ids the glossary should be assigned to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "space_ids": {
                    "description": "List of space ids the glossary should be assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a term base",
        "description": "Delete an existing term base (previously: glossary).",
        "operationId": "glossary/delete",
        "tags": [
          "Glossaries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this glossary, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossaries delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/glossaries/{glossary_id}/terms/{term_id}/translations": {
      "post": {
        "summary": "Create a translation for a term",
        "description": "Create a new translation for a term in a term base (previously: glossary).",
        "operationId": "glossary_term_translation/create",
        "tags": [
          "Glossary Term Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/term_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary_term_translation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create translations on this glossary term, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms/:term_id/translations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"locale_code\":\"en-US\",\"content\":\"My translated term\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_term_translations create \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--term_id <term_id> \\\n--data '{\"locale_code\":\"en-US\", \"content\": \"My translated term\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "glossary_term_translation/create/parameters",
                "required": [
                  "locale_code",
                  "content"
                ],
                "properties": {
                  "locale_code": {
                    "description": "Identifies the language for this translation",
                    "type": "string",
                    "example": "en-US"
                  },
                  "content": {
                    "description": "The content of the translation",
                    "type": "string",
                    "example": "My translated term"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/glossaries/{glossary_id}/terms/{term_id}/translations/{id}": {
      "patch": {
        "summary": "Update a translation for a term",
        "description": "Update an existing translation for a term in a term base (previously: glossary).",
        "operationId": "glossary_term_translation/update",
        "tags": [
          "Glossary Term Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/term_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary_term_translation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this glossary term translation, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms/:term_id/translations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"locale_code\":\"en-US\",\"content\":\"My translated term\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_term_translations update \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--term_id <term_id> \\\n--id <id> \\\n--data '{\"locale_code\":\"en-US\", \"content\": \"My translated term\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "glossary_term_translation/update/parameters",
                "properties": {
                  "locale_code": {
                    "description": "Identifies the language for this translation",
                    "type": "string",
                    "example": "en-US"
                  },
                  "content": {
                    "description": "The content of the translation",
                    "type": "string",
                    "example": "My translated term"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a translation for a term",
        "description": "Delete an existing translation of a term in a term base (previously: glossary).",
        "operationId": "glossary_term_translation/delete",
        "tags": [
          "Glossary Term Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/term_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this glossary term translation, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms/:term_id/translations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_term_translations delete \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--term_id <term_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/glossaries/{glossary_id}/terms": {
      "get": {
        "summary": "List terms",
        "description": "List all terms in term bases (previously: glossary) that the current user has access to.",
        "operationId": "glossary_terms/list",
        "tags": [
          "Glossary Terms"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/glossary_term"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list glossary terms in this glossary, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_terms list \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a term",
        "description": "Create a new term in a term base (previously: glossary).",
        "operationId": "glossary_term/create",
        "tags": [
          "Glossary Terms"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary_term"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create glossary terms in this glossary, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"term\":\"MyCompany\",\"description\":\"Use this when refering to our company\",\"translatable\":true,\"case_sensitive\":true}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_terms create \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--data '{\"term\":\"MyCompany\", \"description\": \"Use this when refering to our company\", \"translatable\":true, \"case_sensitive\":true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "glossary_term/create/parameters",
                "required": [
                  "term"
                ],
                "properties": {
                  "term": {
                    "description": "Glossary term",
                    "type": "string",
                    "example": "MyCompany"
                  },
                  "description": {
                    "description": "Description of term",
                    "type": "string",
                    "example": "Use this when refering to our company"
                  },
                  "translatable": {
                    "description": "Indicates whether the term should be used for all languages or can be translated",
                    "type": "boolean",
                    "example": true
                  },
                  "case_sensitive": {
                    "description": "Indicates whether the term is case sensitive",
                    "type": "boolean",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/glossaries/{glossary_id}/terms/{id}": {
      "get": {
        "summary": "Get a single term",
        "description": "Get details for a single term in the term base (previously: glossary).",
        "operationId": "glossary_term/show",
        "tags": [
          "Glossary Terms"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary_term"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this glossary term, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_terms show \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a term",
        "description": "Update an existing term in a term base (previously: glossary).",
        "operationId": "glossary_term/update",
        "tags": [
          "Glossary Terms"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/glossary_term"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this glossary term, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"term\":\"MyCompany\",\"description\":\"Use this when refering to our company\",\"translatable\":true,\"case_sensitive\":true}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_terms update \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--id <id> \\\n--data '{\"term\":\"MyCompany\", \"description\": \"Use this when refering to our company\", \"translatable\":true, \"case_sensitive\":true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "glossary_term/update/parameters",
                "properties": {
                  "term": {
                    "description": "Glossary term",
                    "type": "string",
                    "example": "MyCompany"
                  },
                  "description": {
                    "description": "Description of term",
                    "type": "string",
                    "example": "Use this when refering to our company"
                  },
                  "translatable": {
                    "description": "Indicates whether the term should be used for all languages or can be translated",
                    "type": "boolean",
                    "example": true
                  },
                  "case_sensitive": {
                    "description": "Indicates whether the term is case sensitive",
                    "type": "boolean",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a term",
        "description": "Delete an existing term in a term base (previously: glossary).",
        "operationId": "glossary_term/delete",
        "tags": [
          "Glossary Terms"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/glossary_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this glossary term, or when the account does not have the Glossary feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/glossaries/:glossary_id/terms/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase glossary_terms delete \\\n--account_id <account_id> \\\n--glossary_id <glossary_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/icu/skeleton": {
      "post": {
        "summary": "Build ICU skeletons",
        "description": "Generates ICU (International Components for Unicode) message format skeletons for a given source string across one or more locales. An ICU skeleton strips the literal text from a pluralized or select message while preserving its structural rules — argument names, plural categories, select cases, and ordinal forms — adjusted to the pluralization rules of each requested locale.\n\nUse this endpoint to normalize translation templates before importing them into locale files, or to validate that a source string carries the plural forms required by a target language.\n\nEither `content` or `id` must be provided — supplying both or neither returns 400. When `id` is used and the referenced translation does not exist, the endpoint returns 404. When the source string is not valid ICU message format syntax, the endpoint returns 422 with an `error` field describing the parse failure.\n",
        "operationId": "icu/skeleton",
        "tags": [
          "ICU"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          }
        ],
        "x-code-samples": [
          {
            "lang": "CLI v2",
            "source": "phrase icu skeleton \\\n--data '{\"content\":\"{number, plural, one {One} other {%{n}}}\",\"locale_codes\":[\"en\"],\"zero_form_enabled\": true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "icu/skeleton/parameters",
                "properties": {
                  "content": {
                    "description": "Source ICU message string to derive skeletons from. Mutually exclusive with `id`; exactly one of the two must be provided.\n",
                    "type": "string",
                    "example": "{count, plural, one {One item} other {# items}}"
                  },
                  "id": {
                    "description": "Code of an existing translation to source content from. Mutually exclusive with `content`; exactly one of the two must be provided. Returns 404 when the translation does not exist.\n",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "locale_codes": {
                    "description": "Locale codes for which to generate skeletons. The pluralization rules of each locale determine which plural forms appear in the output.\n",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "en"
                    },
                    "example": [
                      "en",
                      "de"
                    ]
                  },
                  "keep_content": {
                    "description": "When true, preserves the existing translation text in each plural form and adds any missing forms for the locale rather than stripping all literal content.",
                    "type": "boolean",
                    "example": false
                  },
                  "zero_form_enabled": {
                    "description": "When true, includes the zero plural form in the generated skeleton for locales that support it.",
                    "type": "boolean",
                    "example": false
                  },
                  "cldr_version": {
                    "description": "Pluralization rule set to use when constructing skeletons. Pass `legacy` for pre-CLDR behaviour, or a CLDR version string such as `cldr48`. Defaults to the project's configured version when omitted.",
                    "type": "string",
                    "example": "cldr48"
                  }
                },
                "oneOf": [
                  {
                    "required": [
                      "content"
                    ]
                  },
                  {
                    "required": [
                      "id"
                    ]
                  }
                ]
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/icu"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "description": "Unprocessable entity. Returned when the source string is not valid ICU message format syntax. The response body contains an `error` field with a human-readable description of the parse failure. Correct the ICU syntax in the source string and retry.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "icu/skeleton/error",
                  "properties": {
                    "error": {
                      "type": "string",
                      "description": "Human-readable description of the ICU message format parse failure.",
                      "example": "Expected \"#\" but \"x\" found."
                    }
                  }
                }
              }
            }
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-cli-version": "2.9"
      }
    },
    "/accounts/{account_id}/invitations": {
      "get": {
        "summary": "List invitations",
        "description": "List invitations for an account. It will also list the accessible resources like projects and locales the invited user has access to. In case nothing is shown the default access from the role is used. Access token scope must include `team.manage`.",
        "operationId": "invitations/list",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/invitation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/invitations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a new invitation",
        "description": "Invite a person to an account. Developers and translators need `project_ids` and `locale_ids` assigned to access them. Access token scope must include `team.manage`.",
        "operationId": "invitation/create",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/invitation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/invitations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"email\":\"example@mail.com\",\"role\":\"Developer\",\"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"locale_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"team_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"default_locale_codes\":[\"de\",\"en\"],\"permissions\":{\"create_upload\":true,\"review_translations\":true}}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations create \\\n--account_id <account_id> \\\n--data '{\"email\":\"example@mail.com\", \"role\":\"Developer\", \"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"locale_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"team_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"], \"default_locale_codes\":[\"de\",\"en\"], \"permissions\":\"{\"create_upload\"=>true, \"review_translations\"=>true}\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "invitation/create/parameters",
                "required": [
                  "email",
                  "role"
                ],
                "properties": {
                  "email": {
                    "description": "The email of the invited user. The `email` can not be updated once created. Create a new invitation for each unique email.",
                    "type": "string",
                    "example": "example@mail.com"
                  },
                  "role": {
                    "description": "Invitiation role, can be any of Manager, Developer, Translator.",
                    "type": "string",
                    "example": "Developer"
                  },
                  "project_ids": {
                    "description": "List of project ids the invited user has access to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "locale_ids": {
                    "description": "List of locale ids the invited user has access to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "space_ids": {
                    "description": "List of spaces the user is assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  },
                  "team_ids": {
                    "description": "List of teams the user is assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  },
                  "default_locale_codes": {
                    "description": "List of default locales for the user.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "en",
                      "de"
                    ]
                  },
                  "permissions": {
                    "description": "Additional permissions depending on invitation role. Available permissions are `create_upload` and `review_translations`",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "create_upload": true,
                      "review_translations": true
                    }
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/invitations/{id}": {
      "get": {
        "summary": "Get a single invitation",
        "description": "Get details on a single invitation. Access token scope must include `team.manage`.",
        "operationId": "invitation/show",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/invitation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/invitations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update an invitation",
        "description": "Update an existing invitation (must not be accepted yet). The `email` cannot be updated. Developers and translators need `project_ids` and `locale_ids` assigned to access them. Access token scope must include `team.manage`.",
        "operationId": "invitation/update",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/invitation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/invitations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"role\":\"Invitiation role\",\"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"locale_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"team_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"default_locale_codes\":[\"de\",\"en\"],\"permissions\":{\"create_upload\":true}}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"role\": \"Invitiation role\", \"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"locale_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"team_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"], \"default_locale_codes\":[\"de\",\"en\"], \"permissions\":\"{\"create_upload\"=>true}\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "invitation/update/parameters",
                "properties": {
                  "role": {
                    "description": "Invitiation role, can be any of Manager, Developer, Translator",
                    "type": "string",
                    "example": "Invitiation role"
                  },
                  "project_ids": {
                    "description": "List of project ids the invited user has access to",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "locale_ids": {
                    "description": "List of locale ids the invited user has access to",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "space_ids": {
                    "description": "List of spaces the user is assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  },
                  "team_ids": {
                    "description": "List of teams the user is assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  },
                  "default_locale_codes": {
                    "description": "List of default locales for the user.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "en",
                      "de"
                    ]
                  },
                  "permissions": {
                    "description": "Additional permissions depending on invitation role.",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "create_upload": true
                    }
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete an invitation",
        "description": "Delete an existing invitation (must not be accepted yet). Access token scope must include `team.manage`.",
        "operationId": "invitation/delete",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/invitations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/invitations/{id}/resend": {
      "post": {
        "summary": "Resend an invitation",
        "description": "Resend the invitation email (must not be accepted yet). Access token scope must include `team.manage`.",
        "operationId": "invitation/resend",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/invitation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/invitations/:id/resend\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations resend \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/invitations/{id}": {
      "patch": {
        "summary": "Update a member's invitation access",
        "description": "Update member's settings in the invitations. Access token scope must include `team.manage`.",
        "operationId": "invitation/update_settings",
        "tags": [
          "Invitations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/invitation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/invitations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"project_role\":\"Developer\",\"locale_ids\":[\"fff565db236400772368235db2c6117e\",\"fff565db236400772368235db2c6117f\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase invitations update_settings \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"project_role\":\"Developer\",\"locale_ids\":[\"fff565db236400772368235db2c6117e\",\"fff565db236400772368235db2c6117f\"]}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "invitation/update_settings/parameters",
                "properties": {
                  "project_role": {
                    "description": "Member role, can be any of of Manager, Developer, Translator",
                    "type": "string",
                    "example": "Developer"
                  },
                  "locale_ids": {
                    "description": "List of locale ids the user has access to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/annotations": {
      "get": {
        "summary": "List job annotations",
        "description": "Retrieve a list of annotations for a job.",
        "operationId": "job_annotations/list",
        "tags": [
          "Job Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/job_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_annotation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/annotations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_annotations list \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.43"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/annotations/{id}": {
      "patch": {
        "summary": "Create/Update a job annotation",
        "description": "Create or update an annotation for a job. If the annotation already exists, it will be updated; otherwise, a new annotation will be created.",
        "operationId": "job_annotation/update",
        "tags": [
          "Job Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Name of the annotation to set or update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_annotation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/annotations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"value\":\"Some value...\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_annotations update \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--data '{\"value\": \"Some value...\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_annotation/update/parameters",
                "properties": {
                  "value": {
                    "description": "Annotation value",
                    "type": "string",
                    "example": "Some value..."
                  },
                  "branch": {
                    "description": "Branch name of the job",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.43"
      },
      "delete": {
        "summary": "Delete a job annotation",
        "description": "Delete an annotation for a job.",
        "operationId": "job_annotation/delete",
        "tags": [
          "Job Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Name of the annotation to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/annotations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_annotations delete \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.43"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales/{job_locale_id}/annotations": {
      "get": {
        "summary": "List job locale annotations",
        "description": "Retrieve a list of annotations for a job locale.",
        "operationId": "job_locale_annotations/list",
        "tags": [
          "Job Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/job_locale_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_annotation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:job_locale_id/annotations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X GET"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locale_annotations list \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--job_locale_id <job_locale_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.43"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales/{job_locale_id}/annotations/{id}": {
      "patch": {
        "summary": "Create/Update a job locale annotation",
        "description": "Create or update an annotation for a job locale. If the annotation already exists, it will be updated; otherwise, a new annotation will be created.",
        "operationId": "job_locale_annotation/update",
        "tags": [
          "Job Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/job_locale_id"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Name of the annotation to set or update.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_annotation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:job_locale_id/annotations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"value\":\"Some value...\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locale_annotations update \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--job_locale_id <job_locale_id> \\\n--id <id> \\\n--data '{\"value\": \"Some value...\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_annotation/update/parameters",
                "properties": {
                  "value": {
                    "description": "Annotation value",
                    "type": "string",
                    "example": "Some value..."
                  },
                  "branch": {
                    "description": "Branch name of the job",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.43"
      },
      "delete": {
        "summary": "Delete a job locale annotation",
        "description": "Delete an annotation for a job locale.",
        "operationId": "job_locale_annotation/delete",
        "tags": [
          "Job Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/job_locale_id"
          },
          {
            "name": "id",
            "in": "path",
            "required": true,
            "description": "Name of the annotation to delete.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "No Content",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:job_locale_id/annotations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locale_annotations delete \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--job_locale_id <job_locale_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.43"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/comments/{id}": {
      "get": {
        "summary": "Get a single job comment",
        "description": "Get details on a single job comment.",
        "operationId": "job_comment/show",
        "tags": [
          "Job Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/comments/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_comments show \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a job comment",
        "description": "Update an existing job comment.",
        "operationId": "job_comment/update",
        "tags": [
          "Job Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/comments/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"message\":\"Some message...\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_comments update \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--data '{\"message\": \"Some message...\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_comment/update/parameters",
                "properties": {
                  "message": {
                    "description": "Comment message",
                    "type": "string",
                    "example": "Some message..."
                  },
                  "branch": {
                    "description": "Branch name for the job",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a job comment",
        "description": "Delete an existing job comment.",
        "operationId": "job_comment/delete",
        "tags": [
          "Job Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/comments/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_comments delete \\\n--project_id <project_id> \\\n--job_id <key_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/comments": {
      "get": {
        "summary": "List job comments",
        "description": "List all comments for a job.",
        "operationId": "job_comments/list",
        "tags": [
          "Job Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "name": "order",
            "in": "query",
            "example": "desc",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_comment"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/comments?branch=my-feature-branch&order=desc\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_comments list \\\n--project_id <project_id> \\\n--job_id <key_id> \\\n--branch my-feature-branch \\\n--order desc \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a job comment",
        "description": "Create a new comment for a job.",
        "operationId": "job_comment/create",
        "tags": [
          "Job Comments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_comment"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/comments\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"message\":\"Some message...\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_comments create \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--data '{\"message\": \"Some message...\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_comment/create/parameters",
                "properties": {
                  "message": {
                    "description": "Job comment message",
                    "type": "string",
                    "example": "Some message..."
                  },
                  "branch": {
                    "description": "Branch name for the job",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales": {
      "get": {
        "summary": "List job target locales",
        "description": "List all target locales for a given job.",
        "operationId": "job_locales/list",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/include_annotations"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_locale"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales list \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Add a target locale to a job",
        "description": "Adds a target locale to a job.",
        "operationId": "job_locales/create",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_locale"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"user_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"], \"translator_team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales create \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\", \"user_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"translator_team_ids\": \"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_locales/create/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_id": {
                    "description": "ID of a locale to be added",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "user_ids": {
                    "description": "Array of user ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_ids": {
                    "description": "Array of reviewer ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "translator_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                },
                "required": [
                  "locale_id"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.6.8"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales/{id}": {
      "get": {
        "summary": "Show single job target locale",
        "description": "Get a single target locale for a given job.",
        "operationId": "job_locale/show",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/include_annotations"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_locale"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales show \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.9.0"
      },
      "patch": {
        "summary": "Update a job target locale",
        "description": "Update an existing job target locale.",
        "operationId": "job_locale/update",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_locale"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"user_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"], \"team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"], \"translator_team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales update \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\", \"user_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"team_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"translator_team_ids\": \"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_locale/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_id": {
                    "description": "ID of a target locale to update",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "user_ids": {
                    "description": "Array of user ids to be assigned to the job locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_ids": {
                    "description": "Array of reviewer ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "translator_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.6.8"
      },
      "delete": {
        "summary": "Remove a target locale from a job",
        "description": "Removes a target locale from a job.",
        "operationId": "job_locale/delete",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales delete \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales/{id}/complete": {
      "post": {
        "summary": "Complete a job locale",
        "description": "Mark a job locale as completed.",
        "operationId": "job_locale/complete",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_locale"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:id/complete\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales complete \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_locale/complete/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales/{id}/complete_review": {
      "post": {
        "summary": "Review a job locale",
        "description": "Mark job locale as reviewed.",
        "operationId": "job_locale/complete_review",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_locale"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:id/complete_review\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales complete \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_locale/complete_review/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{job_id}/locales/{id}/reopen": {
      "post": {
        "summary": "Reopen a job locale",
        "description": "Mark a job locale as uncompleted.",
        "operationId": "job_locale/reopen",
        "tags": [
          "Job Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_locale"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:job_id/locales/:id/reopen\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_locales reopen \\\n--project_id <project_id> \\\n--job_id <job_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_locale/reopen/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/job_templates/{job_template_id}/locales": {
      "get": {
        "summary": "List job template locales",
        "description": "List all job template locales for a given job template.",
        "operationId": "job_template_locales/list",
        "tags": [
          "Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_template_locales"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:job_template_id/locales?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_template_locales list \\\n--project_id <project_id> \\\n--job_template_id <job_template_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a job template locale",
        "description": "Create a new job template locale.",
        "operationId": "job_template_locales/create",
        "tags": [
          "Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_locales"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:job_template_id/locales\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"user_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"],\"reviewer_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"], \"translator_team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_template_locales create \\\n--project_id <project_id> \\\n--job_template_id <job_template_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\", \"user_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"reviewer_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"translator_team_ids\":\"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_template_locales/create/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_id": {
                    "description": "locale id",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "user_ids": {
                    "description": "Array of user ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_ids": {
                    "description": "Array of reviewer ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "translator_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                },
                "required": [
                  "locale_id"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.6.8"
      }
    },
    "/projects/{project_id}/job_templates/{job_template_id}/locales/{job_template_locale_id}": {
      "get": {
        "summary": "Get a single job template locale",
        "description": "Get a single job template locale for a given job template.",
        "operationId": "job_template_locale/show",
        "tags": [
          "Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/job_template_locale_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_locales"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:job_template_id/locales/:job_template_locale_id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_template_locales show \\\n--project_id <project_id> \\\n--job_template_id <job_template_id> \\\n--job_template_locale_id <job_template_locale_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.6.8"
      },
      "patch": {
        "summary": "Update a job template locale",
        "description": "Update an existing job template locale.",
        "operationId": "job_template_locale/update",
        "tags": [
          "Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/job_template_locale_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_locales"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:job_template_id/locales/:job_template_locale_id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"user_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"],\"reviewer_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"], \"translator_team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_template_locales update \\\n--project_id <project_id> \\\n--job_template_id <job_template_id> \\\n--job_template_locale_id <job_template_locale_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\", \"user_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"reviewer_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"translator_team_ids\": \"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_template_locale/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_id": {
                    "description": "locale id",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "user_ids": {
                    "description": "Array of user ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_ids": {
                    "description": "Array of reviewer ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "translator_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.6.8"
      },
      "delete": {
        "summary": "Delete a job template locale",
        "description": "Delete an existing job template locale.",
        "operationId": "job_template_locale/delete",
        "tags": [
          "Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/job_template_locale_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:job_template_id/locales/:job_template_locale_id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_template_locales delete \\\n--project_id <project_id> \\\n--job_template_id <job_template_id> \\\n--job_template_locale_id <job_template_locale_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/job_templates": {
      "get": {
        "summary": "List job templates",
        "description": "List all job templates for the given project.",
        "operationId": "job_templates/list",
        "tags": [
          "Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_template"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list job templates in this project, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_templates list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a job template",
        "description": "Create a new job template.",
        "operationId": "job_template/create",
        "tags": [
          "Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create job templates in this project, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"template\",\"briefing\":\"text\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_templates create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"template\", \"briefing\":\"text\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_template/create/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Job template name",
                    "type": "string",
                    "example": "template"
                  },
                  "briefing": {
                    "description": "Briefing for the translators",
                    "type": "string",
                    "example": "text"
                  },
                  "autotranslate": {
                    "description": "Automatically translate the job using machine translation.",
                    "type": "boolean",
                    "example": true
                  },
                  "source_locale_id": {
                    "description": "The API id of the source language. This locale will be set as source locale for the job template. If not provided, the project default locale will be used.",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "owner_id": {
                    "description": "Code of the account member to set as the job template owner. The referenced\nuser must also be a member of the project; passing the code of an account member\nwho is not a project member returns a 404. When omitted or blank, no owner is\npre-set; the user who creates a job from this template is assigned as owner\nat job-creation time.\n",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/job_templates/{id}": {
      "get": {
        "summary": "Get a single job template",
        "description": "Get details on a single job template for a given project.",
        "operationId": "job_templates/show",
        "tags": [
          "Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this job template, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_templates show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a job template",
        "description": "Update an existing job template.",
        "operationId": "job_template/update",
        "tags": [
          "Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this job template, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"template\",\"briefing\":\"text\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_templates update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"template\", \"briefing\":\"text\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job_template/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Job template name",
                    "type": "string",
                    "example": "template"
                  },
                  "briefing": {
                    "description": "Briefing for the translators",
                    "type": "string",
                    "example": "text"
                  },
                  "autotranslate": {
                    "description": "Automatically translate the job using machine translation.",
                    "type": "boolean",
                    "example": true
                  },
                  "source_locale_id": {
                    "description": "The API id of the source language. This locale will be set as source locale for the job template. If not provided, the project default locale will be used.",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "owner_id": {
                    "description": "Code of the account member to set as the job template owner. The referenced\nuser must also be a member of the project; passing the code of an account member\nwho is not a project member returns a 404. Pass an empty string to clear a\npreviously set owner; when blank, jobs created from this template will default\nto assigning the job creator as owner.\n",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a job template",
        "description": "Delete an existing job template.",
        "operationId": "job_template/delete",
        "tags": [
          "Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this job template, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/job_templates/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase job_templates delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs": {
      "get": {
        "summary": "List jobs",
        "description": "List all jobs for the given project.",
        "operationId": "jobs/list",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/job_owner"
          },
          {
            "$ref": "#/components/parameters/job_assignee"
          },
          {
            "$ref": "#/components/parameters/job_state"
          },
          {
            "description": "Filter by multiple job states at once. Accepted values are the same as `state`. When supplied, `state` is ignored. Rejected with `400 Bad Request` if any value is unknown.",
            "name": "states",
            "in": "query",
            "example": [
              "in_progress",
              "completed"
            ],
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            }
          },
          {
            "description": "Filter to jobs that include the translation key identified by this code (matches via the job's tags).",
            "name": "key_id",
            "in": "query",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/job_updated_since"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list jobs in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs?branch=my-feature-branch&owned_by=abcd1234cdef1234abcd1234cdef1234&assigned_to=abcd1234cdef1234abcd1234cdef1234&state=completed\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--owned_by abcd1234cdef1234abcd1234cdef1234 \\\n--assigned_to abcd1234cdef1234abcd1234cdef1234 \\\n--state completed \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a job",
        "description": "Create a new job.",
        "operationId": "job/create",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create jobs in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"de\",\"briefing\":\"de-DE\",\"due_date\":\"2017-08-15\",\"ticket_url\":\"https://example.atlassian.net/browse/FOO\",\"tags\":[\"myUploadTag\"],\"translation_key_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"de\", \"briefing\":\"de-DE\", \"due_date\":\"2017-08-15\", \"ticket_url\":\"https://example.atlassian.net/browse/FOO\", \"tags\": [\"myUploadTag\"], \"translation_key_ids\": [\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Job name",
                    "type": "string",
                    "example": "de"
                  },
                  "source_locale_id": {
                    "description": "The API id of the source language",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "briefing": {
                    "description": "Briefing for the translators",
                    "type": "string",
                    "example": "de-DE"
                  },
                  "due_date": {
                    "description": "Date the job should be finished",
                    "type": "string",
                    "format": "date-time",
                    "example": "2017-08-15",
                    "nullable": true
                  },
                  "ticket_url": {
                    "description": "URL to a ticket for this job (e.g. Jira, Trello)",
                    "type": "string",
                    "example": "https://example.atlassian.net/browse/FOO"
                  },
                  "tags": {
                    "description": "tags of keys that should be included within the job.\n\n*Note: a tag matches every key currently carrying that tag, not just the ones you just tagged. For example, if hundreds of pre-existing keys already share the tag `myUploadTag`, adding it here pulls in every one of them, not only the key you just tagged. Use `translation_key_ids` to scope the job to specific keys instead.*\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "myUploadTag"
                    ]
                  },
                  "translation_key_ids": {
                    "description": "ids of keys that should be included within the job",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "target_locale_ids": {
                    "description": "List of target locales for the job. Mutually exclusive with `job_template_id`.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "job_template_id": {
                    "description": "id of a job template you would like to model the created job after. Any manually added parameters will take preference over template attributes. Mutually exclusive with `target_locale_ids`.",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "autotranslate": {
                    "description": "Automatically translate the job using machine translation.",
                    "type": "boolean",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/jobs": {
      "get": {
        "summary": "List account jobs",
        "description": "List all jobs for the given account.",
        "operationId": "jobs/by_account",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "$ref": "#/components/parameters/job_owner"
          },
          {
            "$ref": "#/components/parameters/job_assignee"
          },
          {
            "$ref": "#/components/parameters/job_state"
          },
          {
            "$ref": "#/components/parameters/job_updated_since"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list jobs in this account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/jobs?owned_by=abcd1234cdef1234abcd1234cdef1234&assigned_to=abcd1234cdef1234abcd1234cdef1234&state=completed\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs by_account \\\n--account_id <account_id> \\\n--owned_by abcd1234cdef1234abcd1234cdef1234 \\\n--assigned_to abcd1234cdef1234abcd1234cdef1234 \\\n--state completed \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}": {
      "get": {
        "summary": "Get a single job",
        "description": "Get details on a single job for a given project.",
        "operationId": "job/show",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          },
          {
            "$ref": "#/components/parameters/include_annotations"
          },
          {
            "$ref": "#/components/parameters/omit_translation_keys"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a job",
        "description": "Update an existing job.",
        "operationId": "job/update",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"de\",\"briefing\":\"de-DE\",\"due_date\":\"2017-08-15\",\"ticket_url\":\"https://example.atlassian.net/browse/FOO\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs update \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--data '{\"name\":\"de\", \"briefing\":\"de-DE\", \"due_date\":\"2017-08-15\", \"ticket_url\":\"https://example.atlassian.net/browse/FOO\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/update/parameters",
                "properties": {
                  "name": {
                    "description": "Job name",
                    "type": "string",
                    "example": "de"
                  },
                  "briefing": {
                    "description": "Briefing for the translators",
                    "type": "string",
                    "example": "de-DE"
                  },
                  "due_date": {
                    "description": "Date the job should be finished",
                    "type": "string",
                    "format": "date-time",
                    "example": "2017-08-15",
                    "nullable": true
                  },
                  "ticket_url": {
                    "description": "URL to a ticket for this job (e.g. Jira, Trello)",
                    "type": "string",
                    "example": "https://example.atlassian.net/browse/FOO"
                  },
                  "target_locale_ids": {
                    "description": "List of target locales for the job.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "autotranslate": {
                    "description": "Automatically translate the job using machine translation",
                    "type": "boolean",
                    "example": true
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a job",
        "description": "Delete an existing job.",
        "operationId": "job/delete",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}/start": {
      "post": {
        "summary": "Start a job",
        "description": "Starts an existing job in state draft.",
        "operationId": "job/start",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to start this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/start\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs start \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/start/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}/complete": {
      "post": {
        "summary": "Complete a job",
        "description": "Mark a job as completed.",
        "operationId": "job/complete",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to complete this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/complete\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs complete \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/complete/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}/reopen": {
      "post": {
        "summary": "Reopen a job",
        "description": "Mark a job as uncompleted.",
        "operationId": "job/reopen",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to reopen this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/reopen\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs reopen \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/reopen/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}/lock": {
      "post": {
        "summary": "Lock a job",
        "description": "If you are the job owner, you may lock a job using this API request.",
        "operationId": "job/lock",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to lock this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/lock\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs lock \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}/unlock": {
      "post": {
        "summary": "Unlock a job",
        "description": "If you are the job owner, you may unlock a locked job using this API request.",
        "operationId": "job/unlock",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to unlock this job."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/unlock\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\"' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs unlock \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/jobs/{id}/keys": {
      "post": {
        "summary": "Add keys to job",
        "description": "Add multiple keys to a existing job.",
        "operationId": "job/keys/create",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"translation_key_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs keys_create \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"translation_key_ids\": \"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/keys/create/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "translation_key_ids": {
                    "description": "ids of keys that should added to the job",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Remove keys from job",
        "description": "Remove multiple keys from existing job.",
        "operationId": "job/keys/delete",
        "tags": [
          "Jobs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/jobs/:id/keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\",\"translation_key_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase jobs keys_delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--data '{\"branch\": \"my-feature-branch\", \"translation_key_ids\": [\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "job/keys/delete/parameters",
                "required": [
                  "translation_key_ids"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "translation_key_ids": {
                    "description": "ids of keys that should be deleted from the job",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                }
              }
            }
          }
        }
      }
    },
    "/projects/{project_id}/keys/{id}/format_annotations": {
      "get": {
        "summary": "List format annotations for a key",
        "description": "Returns the format annotations stored on a translation key. Format annotations capture\nfile-format data recorded when the key was imported — for example, an ARB placeholder\nblock or an XLIFF note.\n\nResults are limited to 1,000 entries.\n",
        "operationId": "key_format_annotations/list",
        "tags": [
          "Key Format Annotations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/branch"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "properties": {
                      "file_format": {
                        "type": "string",
                        "description": "The file format that produced this annotation.\n",
                        "example": "xliff_2"
                      },
                      "original_representation": {
                        "type": "string",
                        "description": "The original file-format snippet captured when the key was imported. Returned as-is, may contain multi-line content.\n",
                        "example": "<note category=\"meaning\">header</note>"
                      }
                    }
                  }
                },
                "example": [
                  {
                    "file_format": "xliff_2",
                    "original_representation": "<note category=\"meaning\">header</note>"
                  }
                ]
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to access keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/figma_attachments/{figma_attachment_id}/keys": {
      "post": {
        "summary": "Attach the Figma attachment to a key",
        "description": "Attach the Figma attachment to a key",
        "operationId": "figma_attachment/attach_to_key",
        "tags": [
          "Key's Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/figma_attachment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments/:figma_attachment_id/keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F branch=my-feature-branch \\\n  -F id=key_id \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachment attach_to_key \\\n--project_id <project_id> \\\n--figma_attachment_id <figma_attachment_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      }
    },
    "/projects/{project_id}/figma_attachments/{figma_attachment_id}/keys/{id}": {
      "delete": {
        "summary": "Detach the Figma attachment from a key",
        "description": "Detach the Figma attachment from a key",
        "operationId": "figma_attachment/detach_from_key",
        "tags": [
          "Key's Figma attachments"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/figma_attachment_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/figma_attachments/:figma_attachment_id/keys/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -F branch=my-feature-branch \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase figma_attachment detach_from_key \\\n--project_id <project_id> \\\n--figma_attachment_id <figma_attachment_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      }
    },
    "/projects/{project_id}/keys": {
      "get": {
        "summary": "List keys",
        "description": "List all keys for the given project. Alternatively you can POST requests to /search.",
        "operationId": "keys/list",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort by field. Can be one of: name, created_at, updated_at.",
            "example": "updated_at",
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "example": "desc",
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/q"
          },
          {
            "description": "Locale used to determine the translation state of a key when filtering for untranslated or translated keys.",
            "example": "abcd1234abcd1234abcd1234abcd1234",
            "name": "locale_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation_key"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys?branch=my-feature-branch&sort=updated_at&order=desc&q=mykey*%20translated:true&locale_id=abcd1234abcd1234abcd1234abcd1234\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--sort updated_at \\\n--order desc \\\n--query 'mykey* translated:true' \\\n--locale_id abcd1234abcd1234abcd1234abcd1234 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a key",
        "description": "Create a new key.",
        "operationId": "key/create",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_key_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F branch=my-feature-branch \\\n  -F name=home.index.headline \\\n  -F description=Some%20description%20worth%20knowing... \\\n  -F name_plural=home.index.headlines \\\n  -F data_type=number \\\n  -F tags=awesome-feature,needs-proofreading \\\n  -F max_characters_allowed=140 \\\n  -F screenshot=@/path/to/my/screenshot.png \\\n  -F custom_metadata[property]=value"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"home.index.headline\", \"description\": \"Some description worth knowing...\", \"name_plural\":\"home.index.headlines\", \"data_type\":\"number\", \"tags\":\"awesome-feature,needs-proofreading\", \"max_characters_allowed\":\"140\", \"screenshot\":\"/path/to/my/screenshot.png\", \"custom_metadata\": {\"property\" => \"value\"}}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "key/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Key name",
                    "type": "string",
                    "example": "home.index.headline"
                  },
                  "description": {
                    "description": "Key description (usually includes contextual information for translators)",
                    "type": "string",
                    "example": "Some description worth knowing..."
                  },
                  "plural": {
                    "description": "Indicates whether key supports pluralization",
                    "type": "boolean",
                    "example": null
                  },
                  "use_ordinal_rules": {
                    "description": "Indicates whether key uses ordinal rules for pluralization",
                    "type": "boolean",
                    "example": null
                  },
                  "name_plural": {
                    "description": "Plural name for the key (used in some file formats, e.g. Gettext)",
                    "type": "string",
                    "example": "home.index.headlines"
                  },
                  "data_type": {
                    "description": "Type of the key. Can be one of the following: string, number, boolean, array, markdown.",
                    "type": "string",
                    "example": "number"
                  },
                  "tags": {
                    "description": "List of tags separated by comma to be associated with the key.",
                    "type": "string",
                    "example": "awesome-feature,needs-proofreading"
                  },
                  "max_characters_allowed": {
                    "description": "Max. number of characters translations for this key can have.",
                    "type": "integer",
                    "example": 140
                  },
                  "screenshot": {
                    "description": "Screenshot/image for the key. This parameter is deprecated. Please use the Screenshots endpoint instead.",
                    "type": "string",
                    "format": "binary",
                    "example": "/path/to/my/screenshot.png",
                    "deprecated": true
                  },
                  "remove_screenshot": {
                    "description": "Indicates whether the screenshot will be deleted. This parameter is deprecated. Please use the Screenshots endpoint instead.",
                    "type": "boolean",
                    "example": null,
                    "deprecated": true
                  },
                  "unformatted": {
                    "description": "Indicates whether the key should be exported as \"unformatted\". Supported by Android XML and other formats.",
                    "type": "boolean",
                    "example": null
                  },
                  "default_translation_content": {
                    "description": "Creates a translation in the default locale with the specified content",
                    "type": "string",
                    "example": "Default translation content"
                  },
                  "autotranslate": {
                    "description": "Indicates whether the key should be autotranslated to other locales based on the copy provided in `default_translation_content`.",
                    "type": "boolean",
                    "example": null
                  },
                  "xml_space_preserve": {
                    "description": "Indicates whether the key should be exported with \"xml:space=preserve\". Supported by several XML-based formats.",
                    "type": "boolean",
                    "example": null
                  },
                  "original_file": {
                    "description": "Original file attribute. Used in some formats, e.g. XLIFF.",
                    "type": "string",
                    "example": null
                  },
                  "localized_format_string": {
                    "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.",
                    "type": "string",
                    "example": null
                  },
                  "localized_format_key": {
                    "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.",
                    "type": "string",
                    "example": null
                  },
                  "custom_metadata": {
                    "description": "Custom metadata property name and value pairs to be associated with key.",
                    "type": "object",
                    "example": {
                      "fruit": "Apple",
                      "vegetable": "Tomato"
                    }
                  },
                  "excluded_in_locales": {
                    "description": "Locales for which translations of this key are excluded from exports. Pass an empty array to clear exclusions.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "de",
                      "fr"
                    ]
                  },
                  "format_value_type": {
                    "description": "Override of the value type for the key in the export. Most useful for formats like Android XML that distinguish string vs. plural resources.\n",
                    "type": "string",
                    "example": "string"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete collection of keys",
        "description": "Delete all keys matching query. Same constraints as list. Please limit the number of affected keys to about 1,000 as you might experience timeouts otherwise.",
        "operationId": "keys/delete-collection",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/q"
          },
          {
            "description": "Locale used to determine the translation state of a key when filtering for untranslated or translated keys.",
            "example": "abcd1234abcd1234abcd1234abcd1234",
            "name": "locale_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_resources"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to manage keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"mykey* translated:true\",\"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys delete-collection \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--query 'mykey* translated:true' \\\n--locale_id abcd1234abcd1234abcd1234abcd1234 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/search": {
      "post": {
        "summary": "Search keys",
        "description": "Search keys for the given project matching query.",
        "operationId": "keys/search",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation_key"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/search\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"sort\":\"updated_at\",\"order\":\"desc\",\"q\":\"mykey* translated:true\",\"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys search \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"sort\":\"updated_at\", \"order\":\"desc\", \"q\":\"'mykey* translated:true'\", \"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "keys/search/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "sort": {
                    "description": "Sort by field. Can be one of: name, created_at, updated_at.",
                    "type": "string",
                    "example": "updated_at"
                  },
                  "order": {
                    "description": "Order direction. Can be one of: asc, desc.",
                    "type": "string",
                    "example": "desc"
                  },
                  "q": {
                    "description": "Specify a query to do broad search for keys by name (including wildcards).\n\nThe following qualifiers are also supported in the search term:\n\n* `ids:key_id,...` for queries on a comma-separated list of ids\n* `name:key_name,...` for text queries on a comma-seperated list of exact key names - spaces, commas, and colons need to be escaped with double backslashes\n* `tags:tag_name,...` to filter for keys with certain comma-seperated list of tags\n* `uploads:upload_id,...` to filter for keys with certain comma-seperated list of uploads\n* `job:{true|false}` to filter for keys mentioned in an active job\n* `translated:{true|false}` for translation status (also requires `locale_id` to be specified)\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `unmentioned_in_upload:upload_id,...` to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in **all** uploads\n\nFind more examples [here](/en/api/strings/usage-examples).\nPlease note: If `tags` are added to filter the search, the search will be limited to a maximum of 65,536 tagged keys.\n",
                    "type": "string",
                    "example": "mykey* translated:true"
                  },
                  "locale_id": {
                    "description": "Locale used to determine the translation state of a key when filtering for untranslated or translated keys.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/{id}": {
      "get": {
        "summary": "Get a single key",
        "description": "Get details on a single key for a given project.",
        "operationId": "key/show",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_key_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a key",
        "description": "Update an existing key.",
        "operationId": "key/update",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_key_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -F branch=my-feature-branch \\\n  -F name=home.index.headline \\\n  -F description=Some%20description%20worth%20knowing... \\\n  -F name_plural=home.index.headlines \\\n  -F data_type=number \\\n  -F tags=awesome-feature,needs-proofreading \\\n  -F max_characters_allowed=140 \\\n  -F screenshot=@/path/to/my/screenshot.png \\\n  -F custom_metadata[property]=value"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"home.index.headline\", \"description\": \"Some description worth knowing...\", \"name_plural\":\"home.index.headlines\", \"data_type\":\"number\", \"tags\":\"awesome-feature,needs-proofreading\", \"max_characters_allowed\":\"140\", \"screenshot\":\"/path/to/my/screenshot.png\", \"custom_metadata\": {\"property\" => \"value\"}}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "key/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Key name",
                    "type": "string",
                    "example": "home.index.headline"
                  },
                  "description": {
                    "description": "Key description (usually includes contextual information for translators)",
                    "type": "string",
                    "example": "Some description worth knowing..."
                  },
                  "plural": {
                    "description": "Indicates whether key supports pluralization",
                    "type": "boolean",
                    "example": null
                  },
                  "use_ordinal_rules": {
                    "description": "Indicates whether key uses ordinal rules for pluralization",
                    "type": "boolean",
                    "example": null
                  },
                  "name_plural": {
                    "description": "Plural name for the key (used in some file formats, e.g. Gettext)",
                    "type": "string",
                    "example": "home.index.headlines"
                  },
                  "data_type": {
                    "description": "Type of the key. Can be one of the following: string, number, boolean, array, markdown.",
                    "type": "string",
                    "example": "number"
                  },
                  "tags": {
                    "description": "List of tags separated by comma to be associated with the key.",
                    "type": "string",
                    "example": "awesome-feature,needs-proofreading"
                  },
                  "max_characters_allowed": {
                    "description": "Max. number of characters translations for this key can have.",
                    "type": "integer",
                    "example": 140
                  },
                  "screenshot": {
                    "description": "Screenshot/image for the key. This parameter is deprecated. Please use the Screenshots endpoint instead.",
                    "type": "string",
                    "format": "binary",
                    "example": "/path/to/my/screenshot.png",
                    "deprecated": true
                  },
                  "remove_screenshot": {
                    "description": "Indicates whether the screenshot will be deleted. This parameter is deprecated. Please use the Screenshots endpoint instead.",
                    "type": "boolean",
                    "example": null,
                    "deprecated": true
                  },
                  "unformatted": {
                    "description": "Indicates whether the key should be exported as \"unformatted\". Supported by Android XML and other formats.",
                    "type": "boolean",
                    "example": null
                  },
                  "xml_space_preserve": {
                    "description": "Indicates whether the key should be exported with \"xml:space=preserve\". Supported by several XML-based formats.",
                    "type": "boolean",
                    "example": null
                  },
                  "original_file": {
                    "description": "Original file attribute. Used in some formats, e.g. XLIFF.",
                    "type": "string",
                    "example": null
                  },
                  "localized_format_string": {
                    "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.",
                    "type": "string",
                    "example": null
                  },
                  "localized_format_key": {
                    "description": "NSStringLocalizedFormatKey attribute. Used in .stringsdict format.",
                    "type": "string",
                    "example": null
                  },
                  "custom_metadata": {
                    "description": "Updates/Creates custom metadata property name and value pairs to be associated with key. If you want to delete a custom metadata property, you can set its value to null. If you want to update a custom metadata property, you can set its value to the new value.",
                    "type": "object",
                    "example": {
                      "fruit": "Apple",
                      "vegetable": "Tomato"
                    }
                  },
                  "excluded_in_locales": {
                    "description": "Locales for which translations of this key are excluded from exports. Pass an empty array to clear exclusions.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "de",
                      "fr"
                    ]
                  },
                  "format_value_type": {
                    "description": "Override of the value type for the key in the export. Most useful for formats like Android XML that distinguish string vs. plural resources.\n",
                    "type": "string",
                    "example": "string"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a key",
        "description": "Delete an existing key.",
        "operationId": "key/delete",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/tag": {
      "patch": {
        "summary": "Add tags to collection of keys",
        "description": "Tags all keys matching query. Same constraints as list.",
        "operationId": "keys/tag",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_resources"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to tag keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/tag\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"mykey* translated:true\",\"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"tags\":\"landing-page,release-1.2\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys tag \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'mykey* translated:true'\", \"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"tags\":\"landing-page,release-1.2\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "keys/tag/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to do broad search for keys by name (including wildcards).\n\nThe following qualifiers are also supported in the search term:\n\n* `ids:key_id,...` for queries on a comma-separated list of ids\n* `name:key_name` for text queries on exact key names - spaces, commas, and colons need to be escaped with double backslashes\n* `tags:tag_name` to filter for keys with certain tags\n* `translated:{true|false}` for translation status (also requires `locale_id` to be specified)\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `unmentioned_in_upload:upload_id,...` to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in **all** uploads\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "mykey* translated:true"
                  },
                  "locale_id": {
                    "description": "Locale used to determine the translation state of a key when filtering for untranslated or translated keys.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "tags": {
                    "description": "Tag or comma-separated list of tags to add to the matching collection of keys",
                    "type": "string",
                    "example": "landing-page,release-1.2"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/untag": {
      "patch": {
        "summary": "Remove tags from collection of keys",
        "description": "Removes specified tags from keys matching query.",
        "operationId": "keys/untag",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_resources"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to tag keys in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/untag\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"mykey* translated:true\",\"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"tags\":\"landing-page,release-1.2\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys untag \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'mykey* translated:true'\", \"locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"tags\":\"landing-page,release-1.2\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "keys/untag/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to do broad search for keys by name (including wildcards).\n\nThe following qualifiers are also supported in the search term:\n* `ids:key_id,...` for queries on a comma-separated list of ids\n* `name:key_name` for text queries on exact key names - spaces, commas, and colons need to be escaped with double backslashes\n* `tags:tag_name` to filter for keys with certain tags\n* `translated:{true|false}` for translation status (also requires `locale_id` to be specified)\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `unmentioned_in_upload:upload_id,...` to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in **all** uploads\n\nFind more examples [here](/en/api/strings/usage-examples).    \n",
                    "type": "string",
                    "example": "mykey* translated:true"
                  },
                  "locale_id": {
                    "description": "Locale used to determine the translation state of a key when filtering for untranslated or translated keys.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "tags": {
                    "description": "Tag or comma-separated list of tags to remove from the matching collection of keys",
                    "type": "string",
                    "example": "landing-page,release-1.2"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/exclude": {
      "patch": {
        "summary": "Exclude a locale on a collection of keys",
        "description": "Exclude a locale on keys matching query. Same constraints as list.",
        "operationId": "keys/exclude",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_resources"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to manage exclusions in this project, or when the account does not have the Batch Actions feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/exclude\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"mykey* translated:true\",\"target_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"tags\":\"landing-page,release-1.2\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys exclude \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'mykey* translated:true'\", \"target_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"tags\":\"landing-page,release-1.2\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "keys/exclude/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to do broad search for keys by name (including wildcards).\n\nThe following qualifiers are also supported in the search term:\n- `ids:key_id,...` for queries on a comma-separated list of ids\n- `name:key_name` for text queries on exact key names - spaces, commas, and colons need to be escaped with double backslashes\n- `tags:tag_name` to filter for keys with certain tags\n- `translated:{true|false}` for translation status (also requires `locale_id` to be specified)\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n- `unmentioned_in_upload:upload_id,...` to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in **all** uploads\n\nFind more examples [here](/en/api/strings/usage-examples).    \n",
                    "type": "string",
                    "example": "mykey* translated:true"
                  },
                  "target_locale_id": {
                    "description": "Exclude translations in locale",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "tags": {
                    "description": "Tag or comma-separated list of tags to add to the matching collection of keys",
                    "type": "string",
                    "example": "landing-page,release-1.2"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/include": {
      "patch": {
        "summary": "Include a locale on a collection of keys",
        "description": "Include a locale on keys matching query. Same constraints as list.",
        "operationId": "keys/include",
        "tags": [
          "Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_resources"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to manage exclusions in this project, or when the account does not have the Batch Actions feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/include\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"mykey* translated:true\",\"target_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"tags\":\"landing-page,release-1.2\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase keys include \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'mykey* translated:true'\", \"target_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"tags\":\"landing-page,release-1.2\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "keys/include/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to do broad search for keys by name (including wildcards).\n\nThe following qualifiers are also supported in the search term:\n\n* `ids:key_id,...` for queries on a comma-separated list of ids\n* `name:key_name` for text queries on exact key names - spaces, commas, and colons need to be escaped with double backslashes\n* `tags:tag_name` to filter for keys with certain tags\n* `translated:{true|false}` for translation status (also requires `locale_id` to be specified)\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `unmentioned_in_upload:upload_id,...` to filter keys unmentioned within upload. When multiple upload IDs provided, matches only keys not mentioned in **all** uploads\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "mykey* translated:true"
                  },
                  "target_locale_id": {
                    "description": "Include translations in locale",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "tags": {
                    "description": "Tag or comma-separated list of tags to add to the matching collection of keys",
                    "type": "string",
                    "example": "landing-page,release-1.2"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/{id}/key_links": {
      "delete": {
        "summary": "Batch unlink child keys from a parent key",
        "description": "Removes one or more child keys from a parent key's linked-key group, or dissolves the entire group by setting unlink_parent to true.\n\nUse this when you need to detach specific child keys from a shared translation source, or to fully break apart a linked-key group so each key manages its own translations independently. When child keys are unlinked, their translations are updated with a copy of the parent's current content (strategy keep_content, the default) or cleared (strategy remove_content).\n\nThis operation is only available on main projects. It returns 422 when a child key in `child_key_ids` is not currently linked to the parent, or when a translation update fails while unlinking.\n",
        "operationId": "key_links/batch_destroy",
        "tags": [
          "Linked Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id_as_id"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "child_key_ids"
                ],
                "type": "object",
                "title": "key_links/batch_destroy/parameters",
                "properties": {
                  "child_key_ids": {
                    "description": "Codes of the child keys to unlink. Required when unlink_parent is false or omitted. Ignored when unlink_parent is true.",
                    "type": "array",
                    "example": [
                      "feature.subtitle",
                      "nav.home"
                    ],
                    "items": {
                      "type": "string",
                      "example": "feature.subtitle"
                    }
                  },
                  "unlink_parent": {
                    "description": "When true, dissolves the entire linked-key group by unlinking all children and removing the group. The child_key_ids field is ignored when this is set to true.",
                    "type": "boolean",
                    "default": false
                  },
                  "strategy": {
                    "type": "string",
                    "description": "Controls what happens to child key translation content after unlinking. keep_content (default) copies the parent translation into each child; remove_content clears each child translation.",
                    "enum": [
                      "keep_content",
                      "remove_content"
                    ],
                    "default": "keep_content"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Updated linked-key group reference after the unlink operation.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/key_link"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:id/key_links\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"child_key_ids\": [\"feature.subtitle\", \"nav.home\"], \"strategy\": \"keep_content\"}'"
          }
        ]
      },
      "get": {
        "summary": "List child keys of a parent key",
        "description": "Returns the key link record for a parent key, including all child keys associated with it. Key linking lets translation keys share translations — a child key inherits content from its designated parent. Use this endpoint to inspect which keys are linked under a given parent before unlinking them or auditing translation consistency across related keys.\n\nThe key identified by `id` must be designated as a parent key (it must have at least one child key linked to it). Listing the links of a key that is not a parent returns 400.\n",
        "operationId": "key_links/index",
        "tags": [
          "Linked Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id_as_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/key_link"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      },
      "post": {
        "summary": "Link child keys to a parent key",
        "description": "Designates a translation key as a parent and links one or more child keys to it. Once linked, child keys receive a special reference marker as their translation content, signalling that their translations are derived from the parent. Use this when you want to group related keys — for example, a short label and its long-form variant — so translators see them in context together.\n\nPass an empty child_key_ids array to mark the key as a parent without linking any children yet. Both the parent key and every child key must belong to the main project; branch keys cannot participate in key links. A child key can have at most one parent at a time; attempting to link a child that already has a parent returns a 422 error with code CHILD_IS_ALREADY_LINKED. Parent and child key plurality must match — linking a plural child to a non-plural parent (or vice versa) also returns a 422.\n",
        "operationId": "key_links/create",
        "tags": [
          "Linked Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id_as_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "required": [
                  "child_key_ids"
                ],
                "type": "object",
                "title": "key_links/create/parameters",
                "properties": {
                  "child_key_ids": {
                    "description": "Codes of the keys to link as children. Pass an empty array to mark the parent key without linking any children.",
                    "type": "array",
                    "example": [
                      "ijkl9012mnop3456ijkl9012mnop3456",
                      "abcd1234efgh5678abcd1234efgh5678"
                    ],
                    "items": {
                      "type": "string"
                    }
                  }
                }
              },
              "example": {
                "child_key_ids": [
                  "ijkl9012mnop3456ijkl9012mnop3456",
                  "abcd1234efgh5678abcd1234efgh5678"
                ]
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Key link reference created.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/key_link"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl -X POST \"https://api.phrase.com/v2/projects/:project_id/keys/:id/key_links\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"child_key_ids\": [\"ijkl9012mnop3456ijkl9012mnop3456\", \"abcd1234efgh5678abcd1234efgh5678\"]}'"
          }
        ]
      }
    },
    "/projects/{project_id}/keys/{id}/key_links/{child_key_id}": {
      "delete": {
        "summary": "Unlink a child key from a parent key",
        "description": "Removes a single child key from a parent key's link group. A link group is the relationship model that keeps child keys synchronized with a parent: while linked, a child key's translations are derived from the parent's content. When you call this endpoint, the child key leaves the group and becomes independent — its existing translations are updated with the parent's current content and then marked unverified, signalling that reviewers should confirm the content is still appropriate for the child's context.\n\nUse this endpoint when you need to detach one specific child key while keeping other children linked. To detach multiple children at once, use the batch unlink endpoint. This operation is only available on main projects.\n\nIt returns 422 when the child key is not currently linked to the specified parent key, or when a translation update fails during the unlink process.\n",
        "operationId": "key_links/destroy",
        "tags": [
          "Linked Keys"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id_as_id"
          },
          {
            "in": "path",
            "name": "child_key_id",
            "description": "The ID of the child translation key to unlink from the parent.",
            "required": true,
            "schema": {
              "type": "string",
              "example": "1234abcd1234cdef1234abcd1234cdef"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "The child key was successfully unlinked from the parent key. The response body is empty.",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            },
            "content": {}
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl -i \"https://api.phrase.com/v2/projects/:project_id/keys/:id/key_links/1234abcd1234cdef1234abcd1234cdef\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          }
        ]
      }
    },
    "/projects/{project_id}/locales/{locale_id}/downloads": {
      "post": {
        "summary": "Initiate async download of a locale",
        "description": "Prepare a locale for download in a specific file format.",
        "operationId": "locale_download/create",
        "tags": [
          "Locale Downloads"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/If-Modified-Since"
          },
          {
            "$ref": "#/components/parameters/If-None-Match"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "locale_download/create/parameters",
                "required": [
                  "file_format"
                ],
                "properties": {
                  "file_format": {
                    "description": "File format name. See the [format guide](https://support.phrase.com/hc/en-us/sections/6111343326364) for all supported file formats.",
                    "type": "string",
                    "example": "yml"
                  },
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "tags": {
                    "description": "Limit results to keys tagged with a list of comma separated tag names.",
                    "type": "string",
                    "example": "feature1,feature2"
                  },
                  "include_empty_translations": {
                    "description": "Indicates whether keys without translations should be included in the output as well.",
                    "example": true,
                    "type": "boolean"
                  },
                  "exclude_empty_zero_forms": {
                    "description": "Indicates whether zero forms should be included when empty in pluralized keys.",
                    "example": true,
                    "type": "boolean"
                  },
                  "include_translated_keys": {
                    "description": "Include translated keys in the locale file. Use in combination with include_empty_translations to obtain only untranslated keys.",
                    "example": true,
                    "type": "boolean"
                  },
                  "keep_notranslate_tags": {
                    "description": "Indicates whether [NOTRANSLATE] tags should be kept.",
                    "type": "boolean",
                    "example": true
                  },
                  "format_options": {
                    "description": "Additional formatting and render options. See the [format guide](https://support.phrase.com/hc/en-us/sections/6111343326364)\nfor a list of options available for each format. Pass format options as a JSON object with key-value pairs corresponding\nto the option name and value. For example, to include comments in a Gettext file, pass `{\"include_comments\": true}`.\n",
                    "example": {
                      "format_options": {
                        "foo": "bar"
                      }
                    },
                    "type": "object",
                    "properties": {}
                  },
                  "encoding": {
                    "description": "Enforces a specific encoding on the file contents. Valid options are \"UTF-8\", \"UTF-16\" and \"ISO-8859-1\".",
                    "example": "UTF-8",
                    "type": "string"
                  },
                  "include_unverified_translations": {
                    "description": "if set to false unverified translations are excluded",
                    "example": true,
                    "type": "boolean"
                  },
                  "use_last_reviewed_version": {
                    "description": "If set to true the last reviewed version of a translation is used. This is only available if the review workflow is enabled for the project.",
                    "type": "boolean",
                    "example": null
                  },
                  "locale_ids": {
                    "description": "Locale IDs or locale names",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "de",
                      "en"
                    ]
                  },
                  "fallback_locale_id": {
                    "description": "If a key has no translation in the locale being downloaded, the translation in the fallback locale will be used.\nProvide the ID of the locale that should be used as the fallback.\nRequires `include_empty_translations` to be set to `true` unless `fallback_for_unverified_translations` is also set to `true`. Mutually exclusive with `use_locale_fallback`.\n",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "use_locale_fallback": {
                    "description": "If a key has no translation in the locale being downloaded, the translation in the fallback locale will be used.\nFallback locale is defined in [locale's settings](/en/api/strings/locales/update-a-locale#body-fallback-locale-id).\nRequires `include_empty_translations` to be set to `true` unless `fallback_for_unverified_translations` is also set to `true`. Mutually exclusive with `fallback_locale_id`.\n",
                    "type": "boolean",
                    "example": false
                  },
                  "fallback_for_unverified_translations": {
                    "description": "If set to `true`, translations in a non-final state are replaced by the fallback locale's translation at export time.\nIn the simple workflow, \"non-final\" means `unverified`. In the review workflow, it additionally includes `translated` (awaiting review).\nNo stored translations are modified. Requires `fallback_locale_id` or `use_locale_fallback` to be set; a `422` validation error is returned otherwise.\n",
                    "type": "boolean",
                    "example": false
                  },
                  "source_locale_id": {
                    "description": "Provides the source language of a corresponding job as the source language of the generated locale file. This parameter will be ignored unless used in combination with a `tag` parameter indicating a specific job.",
                    "example": "abcd1234abcd1234abcd1234abcd1234",
                    "type": "string"
                  },
                  "custom_metadata_filters": {
                    "description": "Custom metadata filters. Provide the name of the metadata field and the value to filter by. Only keys with matching metadata will be included in the download.\n",
                    "type": "object",
                    "properties": {}
                  },
                  "translation_key_prefix": {
                    "description": "Download all translation keys, and remove the specified prefix where possible. Warning: this may create duplicate key names if other keys share the same name after the prefix is removed.",
                    "example": "prefix_",
                    "type": "string"
                  },
                  "filter_by_prefix": {
                    "description": "Only download translation keys containing the prefix specified by `translation_key_prefix`, and remove that prefix from the generated file. Requires `translation_key_prefix` to be set.",
                    "type": "boolean"
                  },
                  "updated_since": {
                    "description": "Only include translations and keys that have been updated since the given date. The date must be in ISO 8601 format (e.g., `2023-01-01T00:00:00Z`).\n",
                    "type": "string",
                    "example": "2023-01-01T00:00:00Z"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/locale_download"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create download jobs for this locale."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:locale_id/downloads\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"file_format\":\"yml\",\"tags\":\"feature1,feature\",\"custom_metadata_filters\":{\"tone\":\"friendly\"}}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locale_downloads create \\\n--project_id <project_id> \\\n--locale_id <locale_id> \\\n--branch my-feature-branch \\\n--file_format yml \\\n--tags feature1,feature2 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.29.0"
      }
    },
    "/projects/{project_id}/locales/{locale_id}/downloads/{id}": {
      "get": {
        "summary": "Show status of an async locale download",
        "description": "Show status of already started async locale download. If the download is finished, the download link will be returned.",
        "operationId": "locale_download/show",
        "tags": [
          "Locale Downloads"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/If-Modified-Since"
          },
          {
            "$ref": "#/components/parameters/If-None-Match"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/locale_download"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this download."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "410": {
            "description": "Gone. The async download has expired (downloads are retained for a limited time after completion) and can no longer be retrieved. Issue a new download request.\n"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:locale_id/downloads/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locale_downloads show \\\n--project_id <project_id> \\\n--locale_id <locale_id> \\\n--id <id>\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.29.0"
      }
    },
    "/accounts/{id}/locales": {
      "get": {
        "summary": "List locales used in account",
        "description": "List all locales unique by locale code used across all projects within an account.",
        "operationId": "account/locales",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "title": "locale_preview",
                    "properties": {
                      "name": {
                        "type": "string"
                      },
                      "code": {
                        "type": "string"
                      }
                    },
                    "example": {
                      "name": "English",
                      "code": "en-GB"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:id/locales\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase accounts locales \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/locales": {
      "get": {
        "summary": "List locales",
        "description": "List all locales for the given project.",
        "operationId": "locales/list",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "Sort locales. Valid options are \"name_asc\", \"name_desc\", \"default_asc\", \"default_desc\".",
            "example": null,
            "name": "sort_by",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Specify a query to filter locales. Currently supports `name` argument, filtering only locales with names starting with the given string.",
            "example": "name:en",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/locale"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list locales in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locales list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a locale",
        "description": "Create a new locale.",
        "operationId": "locale/create",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/locale_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create locales in this project, when `unverify_new_translations` / `unverify_updated_translations` is set without the Advanced Workflows feature, or when `main=true` is set without the Verification System feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"de\",\"code\":\"de-DE\",\"source_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"fallback_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locales create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"de\", \"code\":\"de-DE\", \"source_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"fallback_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "locale/create/parameters",
                "required": [
                  "name",
                  "code"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Locale name. Must be unique per project.",
                    "type": "string",
                    "example": "de"
                  },
                  "code": {
                    "description": "Locale ISO code. Unlike `name`, `code` is not required to be unique per project - creating a locale whose `code` duplicates an existing locale's `code` in the same project will succeed rather than error, resulting in two locales that share the same code.",
                    "type": "string",
                    "example": "de-DE"
                  },
                  "default": {
                    "description": "Indicates whether locale is the default locale. If set to true, the previous default locale the project is no longer the default locale.",
                    "type": "boolean",
                    "example": null
                  },
                  "main": {
                    "description": "Indicates whether locale is a main locale. Main locales are part of the [Verification System](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "rtl": {
                    "description": "Indicates whether locale is a RTL (Right-to-Left) locale.",
                    "type": "boolean",
                    "example": null
                  },
                  "source_locale_id": {
                    "description": "Source locale. Can be the name or id of the locale. Preferred is id.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "fallback_locale_id": {
                    "description": "Fallback locale for empty translations. Can be a locale name or id.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "unverify_new_translations": {
                    "description": "Indicates that new translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "unverify_updated_translations": {
                    "description": "Indicates that updated translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "unverify_on_source_changes": {
                    "description": "Indicates that translations for this locale should be marked as unverified when the source language has been changed.",
                    "type": "boolean",
                    "example": null
                  },
                  "autotranslate": {
                    "description": "If set, translations for this locale will be fetched automatically, right after creation.",
                    "type": "boolean",
                    "example": null
                  },
                  "language_ai_profile": {
                    "description": "Identifier of the Language AI profile to use for this locale.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/locales/{id}": {
      "get": {
        "summary": "Get a single locale",
        "description": "Get details on a single locale for a given project.",
        "operationId": "locale/show",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id_as_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/locale_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this locale."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locales show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a locale",
        "description": "Update an existing locale.",
        "operationId": "locale/update",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id_as_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/locale_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this locale, when `unverify_new_translations` / `unverify_updated_translations` is set without the Advanced Workflows feature, or when `main=true` is set without the Verification System feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"de\",\"code\":\"de-DE\",\"source_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locales update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"de\", \"code\":\"de-DE\", \"source_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "locale/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Locale name",
                    "type": "string",
                    "example": "de"
                  },
                  "code": {
                    "description": "Locale ISO code",
                    "type": "string",
                    "example": "de-DE"
                  },
                  "default": {
                    "description": "Indicates whether locale is the default locale. If set to true, the previous default locale the project is no longer the default locale.",
                    "type": "boolean",
                    "example": null
                  },
                  "main": {
                    "description": "Indicates whether locale is a main locale. Main locales are part of the [Verification System](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "rtl": {
                    "description": "Indicates whether locale is a RTL (Right-to-Left) locale.",
                    "type": "boolean",
                    "example": null
                  },
                  "source_locale_id": {
                    "description": "Source locale. Can be the name or id of the locale. Preferred is id.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "fallback_locale_id": {
                    "description": "Fallback locale for empty translations. Can be a locale name or id.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "unverify_new_translations": {
                    "description": "Indicates that new translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "unverify_updated_translations": {
                    "description": "Indicates that updated translations for this locale should be marked as unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "unverify_on_source_changes": {
                    "description": "Indicates that translations for this locale should be marked as unverified when the source language has been changed.",
                    "type": "boolean",
                    "example": null
                  },
                  "autotranslate": {
                    "description": "If set, translations for this locale will be fetched automatically, right after creation.",
                    "type": "boolean",
                    "example": null
                  },
                  "language_ai_profile": {
                    "description": "Identifier of the Language AI profile to use for this locale.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a locale",
        "description": "Delete an existing locale.",
        "operationId": "locale/delete",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id_as_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this locale."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locales delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/locales/{id}/download": {
      "get": {
        "summary": "Download a locale",
        "description": "Download a locale in a specific file format.",
        "operationId": "locale/download",
        "tags": [
          "Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/If-Modified-Since"
          },
          {
            "$ref": "#/components/parameters/If-None-Match"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id_as_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "File format name. See the [format guide](https://support.phrase.com/hc/en-us/sections/6111343326364) for all supported file formats.",
            "example": "yml",
            "name": "file_format",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Limit results to keys tagged with a list of comma separated tag names.",
            "example": "feature1,feature2",
            "name": "tags",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Limit download to tagged keys. This parameter is deprecated. Please use the \"tags\" parameter instead",
            "example": "feature",
            "deprecated": true,
            "name": "tag",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Indicates whether keys without translations should be included in the output as well.",
            "example": null,
            "name": "include_empty_translations",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Indicates whether zero forms should be included when empty in pluralized keys.",
            "example": null,
            "name": "exclude_empty_zero_forms",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include translated keys in the locale file. Use in combination with include_empty_translations to obtain only untranslated keys.",
            "example": null,
            "name": "include_translated_keys",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Indicates whether [NOTRANSLATE] tags should be kept.",
            "example": null,
            "name": "keep_notranslate_tags",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "This option is obsolete. Projects that were created on or after Nov 29th 2019 or that did not contain emoji by then will not require this flag any longer since emoji are now supported natively.",
            "example": null,
            "deprecated": true,
            "name": "convert_emoji",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Additional formatting and render options. See the [format guide](https://support.phrase.com/hc/en-us/sections/6111343326364) for a list of options available for each format. Specify format options like this: `...&format_options[foo]=bar`",
            "example": null,
            "name": "format_options",
            "in": "query",
            "schema": {
              "type": "object",
              "properties": {}
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "description": "Enforces a specific encoding on the file contents. Valid options are \"UTF-8\", \"UTF-16\" and \"ISO-8859-1\".",
            "example": null,
            "name": "encoding",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Indicates whether the locale file should skip all unverified translations. This parameter is deprecated and should be replaced with `include_unverified_translations`.",
            "example": null,
            "deprecated": true,
            "name": "skip_unverified_translations",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "if set to false unverified translations are excluded",
            "example": null,
            "name": "include_unverified_translations",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "If set to true the last reviewed version of a translation is used. This is only available if the review workflow is enabled for the project.",
            "example": null,
            "name": "use_last_reviewed_version",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "fallback_locale_id",
            "description": "If a key has no translation in the locale being downloaded, the translation in the fallback locale will be used.\nProvide the ID of the locale that should be used as the fallback.\nRequires `include_empty_translations` to be set to `true` unless `fallback_for_unverified_translations` is also set to `true`. Mutually exclusive with `use_locale_fallback`.\n",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "example": null
          },
          {
            "name": "use_locale_fallback",
            "description": "If a key has no translation in the locale being downloaded, the translation in the fallback locale will be used.\nFallback locale is defined in [locale's settings](/en/api/strings/locales/update-a-locale#body-fallback-locale-id).\nRequires `include_empty_translations` to be set to `true` unless `fallback_for_unverified_translations` is also set to `true`. Mutually exclusive with `fallback_locale_id`.\n",
            "in": "query",
            "schema": {
              "type": "boolean"
            },
            "example": true
          },
          {
            "name": "fallback_for_unverified_translations",
            "description": "If set to `true`, translations in a non-final state are replaced by the fallback locale's translation at export time.\nIn the simple workflow, \"non-final\" means `unverified`. In the review workflow, it additionally includes `translated` (awaiting review).\nNo stored translations are modified. Requires `fallback_locale_id` or `use_locale_fallback` to be set; a `422` validation error is returned otherwise.\n",
            "in": "query",
            "required": false,
            "schema": {
              "type": "boolean"
            },
            "example": null
          },
          {
            "description": "Provides the source language of a corresponding job as the source language of the generated locale file. This parameter will be ignored unless used in combination with a `tag` parameter indicating a specific job.",
            "example": null,
            "name": "source_locale_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Download all translation keys, and remove the specified prefix where possible. Warning: this may create duplicate key names if other keys share the same name after the prefix is removed.",
            "example": "prefix_",
            "name": "translation_key_prefix",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Only download translation keys containing the prefix specified by `translation_key_prefix`, and remove that prefix from the generated file. Requires `translation_key_prefix` to be set.",
            "example": null,
            "name": "filter_by_prefix",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "custom_metadata_filters",
            "in": "query",
            "description": "Custom metadata filters. Provide the name of the metadata field and the value to filter by. Only keys with matching metadata will be included in the download.\n",
            "schema": {
              "type": "object",
              "properties": {}
            },
            "style": "deepObject",
            "explode": true
          },
          {
            "name": "locale_ids",
            "description": "Locale IDs or locale names",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "example": [
              "de",
              "en"
            ]
          },
          {
            "name": "updated_since",
            "description": "Only include translations and keys that have been updated since the given date. The date must be in ISO 8601 format (e.g., `2023-01-01T00:00:00Z`).\n",
            "in": "query",
            "schema": {
              "type": "string"
            },
            "example": "2023-01-01T00:00:00Z"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "*": {
                "schema": {
                  "type": "string",
                  "format": "binary"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:id/download?branch=my-feature-branch&file_format=yml&tags=feature1,feature2&tag=feature&custom_metadata_filters[tone]=friendly\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase locales download \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--file_format yml \\\n--tags feature1,feature2 \\\n--tag feature \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.6.4"
      }
    },
    "/accounts/{account_id}/machine_translation_settings": {
      "get": {
        "operationId": "machine_translation_settings/show",
        "summary": "Get machine translation settings",
        "description": "Returns the machine translation configuration for the account, including the\ndefault translation service, current machine translation unit usage, and any\nlocale-pair-specific provider mappings.\n",
        "tags": [
          "Machine Translation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/machine_translation_settings"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "Basic": []
          },
          {
            "Token": []
          },
          {
            "OAuthImplicit": [
              "read"
            ]
          },
          {
            "OAuthExplicit": [
              "read"
            ]
          }
        ]
      },
      "patch": {
        "operationId": "machine_translation_settings/update",
        "summary": "Update machine translation settings",
        "description": "Sets the default machine translation service for the account. Requires write\naccess to the account's machine translation settings. Passing an empty or\nabsent value for `default_service` resets the account to its plan default\n(Microsoft Translate).\n",
        "tags": [
          "Machine Translation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "machine_translation_settings/update/parameters",
                "properties": {
                  "default_service": {
                    "type": "string",
                    "nullable": true,
                    "description": "The machine translation engine to use as the account default. Supported values: language_ai_translate, aita_translate, microsoft_translate, google_translate, amazon_translate. Pass null or an empty string to reset to the plan default.\n",
                    "example": "google_translate"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/machine_translation_settings"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "Basic": []
          },
          {
            "Token": []
          },
          {
            "OAuthImplicit": [
              "write"
            ]
          },
          {
            "OAuthExplicit": [
              "write"
            ]
          }
        ]
      }
    },
    "/accounts/{account_id}/machine_translation_locale_provider_mappings": {
      "post": {
        "operationId": "machine_translation_locale_provider_mappings/create",
        "summary": "Create a locale provider mapping",
        "description": "Creates a locale-pair-specific machine translation provider override for the\naccount. When a mapping exists for a given source/target locale pair, that\nprovider is used instead of the account default. Only one mapping may exist\nper source/target locale pair; attempting to create a duplicate returns a\nvalidation error. The source and target locale codes must differ.\n",
        "tags": [
          "Machine Translation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "machine_translation_locale_provider_mappings/create/parameters",
                "required": [
                  "source_locale_code",
                  "target_locale_code",
                  "service"
                ],
                "properties": {
                  "source_locale_code": {
                    "type": "string",
                    "description": "The locale code of the source language (e.g. \"en\").",
                    "example": "en"
                  },
                  "target_locale_code": {
                    "type": "string",
                    "description": "The locale code of the target language (e.g. \"de\"). Must differ from source_locale_code.\n",
                    "example": "de"
                  },
                  "service": {
                    "type": "string",
                    "description": "The machine translation service to use for this locale pair. Must be a service enabled for the account.\n",
                    "example": "google_translate"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            },
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/machine_translation_locale_provider_mapping"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "Basic": []
          },
          {
            "Token": []
          },
          {
            "OAuthImplicit": [
              "write"
            ]
          },
          {
            "OAuthExplicit": [
              "write"
            ]
          }
        ]
      },
      "delete": {
        "operationId": "machine_translation_locale_provider_mappings/destroy",
        "summary": "Delete a locale provider mapping",
        "description": "Removes the machine translation provider override for the specified source\nand target locale pair. The mapping is identified by locale codes supplied\nas query parameters rather than a path ID.\n",
        "tags": [
          "Machine Translation"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "name": "source_locale_code",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The locale code of the source language of the mapping to delete.",
            "example": "en"
          },
          {
            "name": "target_locale_code",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "The locale code of the target language of the mapping to delete.",
            "example": "de"
          }
        ],
        "responses": {
          "204": {
            "description": "The resource was deleted successfully.",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "security": [
          {
            "Basic": []
          },
          {
            "Token": []
          },
          {
            "OAuthImplicit": [
              "write"
            ]
          },
          {
            "OAuthExplicit": [
              "write"
            ]
          }
        ]
      }
    },
    "/accounts/{account_id}/members": {
      "get": {
        "summary": "List members",
        "description": "Get all users active in the account. It also lists resources like projects and locales the member has access to. In case nothing is shown the default access from the role is used. Access token scope must include `team.manage`.",
        "operationId": "members/list",
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/member"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/members\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase members list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/members/{id}": {
      "get": {
        "summary": "Get single member",
        "description": "Get details on a single user in the account. Access token scope must include `team.manage`.",
        "operationId": "member/show",
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/member"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/members/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase members show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a member",
        "description": "Update user permissions in the account. Developers and translators need `project_ids` and `locale_ids` assigned to access them. To grant account-wide language access instead of access scoped to specific projects, use `default_locale_codes`. Access token scope must include `team.manage`.",
        "operationId": "member/update",
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/member"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/members/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"role\":\"Developer\",\"strategy\":\"set\",\"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"locale_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\",\"default_locale_codes\":[\"de\",\"en\"],\"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"],\"permissions\":{\"create_upload\":true,\"review_translations\":true}}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase members update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"role\":\"Developer\", \"strategy\":\"set\", \"project_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"locale_ids\":\"abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235\", \"default_locale_codes\":[\"de\",\"en\"], \"space_ids\":[\"abcd1234abcd1234abcd1234\",\"abcd1234abcd1234abcd1235\"], \"permissions\":\"{\"create_upload\"=>true, \"review_translations\"=>true}\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "member/update/parameters",
                "properties": {
                  "strategy": {
                    "description": "Update strategy, can be any of set, add, remove. If provided, it will set, add or remove given spaces, projects and locale ids from users access list.",
                    "type": "string",
                    "example": "set"
                  },
                  "role": {
                    "description": "Member role, can be any of of Admin, ProjectManager, Developer, Designer, Translator",
                    "type": "string",
                    "example": "Developer"
                  },
                  "project_ids": {
                    "description": "List of project ids the user has access to. ",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "locale_ids": {
                    "description": "List of locale ids the user has access to. This is project-scoped and must be paired with `project_ids` (and `strategy`) to take effect; it does not grant account-wide language access.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235"
                  },
                  "default_locale_codes": {
                    "description": "List of default locales for the user, applied across all of the user's projects. This is the account-level field corresponding to \"Language access\" in the translator profile UI.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "en",
                      "fi"
                    ]
                  },
                  "space_ids": {
                    "description": "List of spaces the user is assigned to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  },
                  "permissions": {
                    "description": "Additional permissions depending on member role. Available permissions are `create_upload` and `review_translations`",
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "create_upload": true,
                      "review_translations": true
                    }
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Remove a user from the account",
        "description": "Remove a user from the account. The user will be removed from the account but not deleted from Phrase. Access token scope must include `team.manage`.",
        "operationId": "member/delete",
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/members/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase members delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/members": {
      "get": {
        "summary": "List project members",
        "description": "Get all members active in the project. Access token scope must include `read`.",
        "operationId": "members/by_project",
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "description": "Specify a query to search for members by name or email (including wildcards).",
            "example": "jane*",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter members to those assigned to the job identified by this id.",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "name": "job_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "type": "object",
                    "title": "project_member",
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "username": {
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "position": {
                        "type": "string"
                      },
                      "created_at": {
                        "type": "string",
                        "format": "date-time"
                      },
                      "updated_at": {
                        "type": "string",
                        "format": "date-time"
                      }
                    },
                    "example": {
                      "id": "acbdacbdacbdacbdacbdacbd",
                      "username": "myname",
                      "name": "My Name",
                      "position": "Lead Developer",
                      "created_at": "2020-12-07T12:56:21Z",
                      "updated_at": "2020-12-09T12:56:21Z"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list members in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/members\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase members by_project \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/members/{id}": {
      "patch": {
        "summary": "Update a member's project settings",
        "description": "Update user settings in the project. Access token scope must include `team.manage`.",
        "operationId": "member/update_settings",
        "tags": [
          "Members"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/member_project_detail"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/members/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"project_role\":\"Developer\",\"locale_ids\":[\"fff565db236400772368235db2c6117e\",\"fff565db236400772368235db2c6117f\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase members update_settings \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"project_role\":\"Developer\",\"locale_ids\":[\"fff565db236400772368235db2c6117e\",\"fff565db236400772368235db2c6117f\"]}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "member/update_settings/parameters",
                "properties": {
                  "project_role": {
                    "description": "Member role, can be any of of Manager, Developer, Translator",
                    "type": "string",
                    "example": "Developer"
                  },
                  "locale_ids": {
                    "description": "List of locale ids the user has access to.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234",
                      "abcd1234abcd1234abcd1235"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/notification_groups": {
      "get": {
        "summary": "List notification groups",
        "description": "List all notification groups from the current user",
        "operationId": "notification_groups/list",
        "tags": [
          "Notification Groups"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/notification_group_detail"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not the recipient of the listed notification groups."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/notification_groups\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase notification_groups list \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/notification_groups/mark_all_as_read": {
      "patch": {
        "summary": "Mark all notification groups as read",
        "description": "Mark all notification groups of the current user as read",
        "operationId": "notification_groups/mark_all_as_read",
        "tags": [
          "Notification Groups"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/notification_group_detail"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not the recipient of the listed notification groups."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/notification_groups/mark_all_as_read\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase notification_groups mark_all_as_read \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/notification_groups/{id}/mark_as_read": {
      "patch": {
        "summary": "Mark a notification group as read",
        "description": "Mark a notifications group of the current user as read",
        "operationId": "notification_groups/mark_as_read",
        "tags": [
          "Notification Groups"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/notification_group_detail"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not the recipient of the notification group."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/notification_groups/:id/mark_as_read\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase notification_groups mark_as_read \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/notifications": {
      "get": {
        "summary": "List notifications",
        "description": "List all notifications from the current user",
        "operationId": "notifications/list",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "Include only unseen notifications",
            "example": true,
            "name": "unseen",
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Restrict the results to notifications created within the last N days. Coerced to integer; non-numeric values resolve to 0 (returning nothing).",
            "example": 7,
            "name": "last_days",
            "in": "query",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/notification"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not the recipient of the listed notifications."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/notifications\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase notifications list \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/notifications/mark_all_as_read": {
      "post": {
        "summary": "Mark all notifications as read",
        "description": "Mark all notifications of the current user as read",
        "operationId": "notifications/mark_all_as_read",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/notification"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not the recipient of the listed notifications."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/notifications/mark_all_as_read\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase notifications mark_all_as_read \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/notifications/{id}": {
      "get": {
        "summary": "Get a single notification",
        "description": "Get details on a single notification.",
        "operationId": "notifications/show",
        "tags": [
          "Notifications"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/notification"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/notification/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase notifications show \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/orders": {
      "get": {
        "summary": "List orders",
        "description": "List all orders for the given project.",
        "operationId": "orders/list",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter the result to orders that include the given translation. When supplied with a translation code that does not exist, an empty list is returned.",
            "name": "translation_id",
            "in": "query",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation_order"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list translation orders in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/orders?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase orders list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a new order",
        "description": "Create a new order. Access token scope must include `orders.create`.",
        "operationId": "order/create",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_order"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `orders.create` scope or when the requesting user is not allowed to create translation orders in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/orders\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"Welcome message translations\",\"lsp\":\"textmaster\",\"source_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"target_locale_ids\":[\"1234abcd1234abcd1234abcd1234abcd\",\"abcd1234abcd1234abcd1234abcd1234\"],\"translation_type\":\"premium\",\"tag\":\"my-awesome-feature\",\"message\":\"Please make everything sound really nice :)\",\"styleguide_id\":\"1234abcd1234abcd1234abcd1234abcd\",\"category\":\"C021\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase orders create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"Welcome message translations\", \"lsp\":\"textmaster\", \"source_locale_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"target_locale_ids\": \"1234abcd1234abcd1234abcd1234abcd,abcd1234abcd1234abcd1234abcd1234\", \"translation_type\":\"premium\", \"tag\":\"my-awesome-feature\", \"message\": \"Please make everything sound really nice :)\", \"styleguide_id\":\"1234abcd1234abcd1234abcd1234abcd\", \"category\":\"C021\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "order/create/parameters",
                "required": [
                  "name",
                  "lsp"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "the name of the order, default name is: Translation order from 'current datetime'",
                    "type": "string",
                    "example": "Welcome message translations"
                  },
                  "lsp": {
                    "description": "Name of the LSP that should process this order. Can be one of gengo, textmaster.",
                    "type": "string",
                    "example": "textmaster"
                  },
                  "source_locale_id": {
                    "description": "Source locale for the order. Can be the name or id of the source locale. Preferred is id.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "target_locale_ids": {
                    "description": "List of target locales you want the source content translate to. Can be the name or id of the target locales. Preferred is id.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "1234abcd1234abcd1234abcd1234abcd",
                      "abcd1234abcd1234abcd1234abcd1234"
                    ]
                  },
                  "translation_type": {
                    "description": "Name of the quality level, availability depends on the LSP. Can be one of:  standard, pro (for orders processed by Gengo) and one of regular, premium, enterprise (for orders processed by TextMaster)",
                    "type": "string",
                    "example": "premium"
                  },
                  "tag": {
                    "description": "Tag you want to order translations for.",
                    "type": "string",
                    "example": "my-awesome-feature"
                  },
                  "message": {
                    "description": "Message that is displayed to the translators for description.",
                    "type": "string",
                    "example": "Please make everything sound really nice :)"
                  },
                  "styleguide_id": {
                    "description": "Style guide for translators to be sent with the order.",
                    "type": "string",
                    "example": "1234abcd1234abcd1234abcd1234abcd"
                  },
                  "unverify_translations_upon_delivery": {
                    "description": "Unverify translations upon delivery.",
                    "type": "boolean",
                    "example": null
                  },
                  "include_untranslated_keys": {
                    "description": "Order translations for keys with untranslated content in the selected target locales.",
                    "type": "boolean",
                    "example": null
                  },
                  "include_unverified_translations": {
                    "description": "Order translations for keys with unverified content in the selected target locales.",
                    "type": "boolean",
                    "example": null
                  },
                  "category": {
                    "description": "Category to use (required for orders processed by TextMaster).",
                    "type": "string",
                    "example": "C021"
                  },
                  "quality": {
                    "description": "Extra proofreading option to ensure consistency in vocabulary and style. Only available for orders processed by TextMaster.",
                    "type": "boolean",
                    "example": null
                  },
                  "priority": {
                    "description": "Indicates whether the priority option should be ordered which decreases turnaround time by 30%. Available only for orders processed by TextMaster.",
                    "type": "boolean",
                    "example": null
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/orders/{id}": {
      "get": {
        "summary": "Get a single order",
        "description": "Get details on a single order.",
        "operationId": "order/show",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_order"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this translation order."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/orders/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase orders show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Cancel an order",
        "description": "Cancel an existing order. Must not yet be confirmed.",
        "operationId": "order/delete",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this translation order."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/orders/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase orders delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/orders/{id}/confirm": {
      "patch": {
        "summary": "Confirm an order",
        "description": "Confirm an existing order and send it to the provider for translation. Same constraints as for create.",
        "operationId": "order/confirm",
        "tags": [
          "Orders"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_order"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `orders.create` scope or when the requesting user is not allowed to confirm this translation order."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/orders/:id/confirm\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase orders confirm \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "order/confirm/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/job_templates/{job_template_id}/locales": {
      "get": {
        "summary": "List organization job template locales",
        "description": "List all job template locales for a given organization job template.",
        "operationId": "organization_job_template_locales/list",
        "tags": [
          "Organization Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/job_template_locales"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:job_template_id/locales\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_template_locales list \\\n--account_id <account_id> \\\n--job_template_id <job_template_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.7.0"
      },
      "post": {
        "summary": "Create an organization job template locale",
        "description": "Create a new organization job template locale.",
        "operationId": "organization_job_template_locales/create",
        "tags": [
          "Organization Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_locales"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:job_template_id/locales\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"locale_name\":\"de-1\",\"locale_code:\"de-DE\",user_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"],\"reviewer_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"],\"translator_team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_template_locales create \\\n--account_id <account_id> \\\n--job_template_id <job_template_id> \\\n--data '{\"locale_name\": \"de-1\", \"locale_code: \"de-DE\", \"user_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"reviewer_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"translator_team_ids\": \"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "organization_job_template_locales/create/parameters",
                "properties": {
                  "locale_name": {
                    "description": "locale name",
                    "type": "string",
                    "example": "de-1"
                  },
                  "locale_code": {
                    "description": "locale code",
                    "type": "string",
                    "example": "de-DE"
                  },
                  "user_ids": {
                    "description": "Array of user ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_ids": {
                    "description": "Array of reviewer ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "translator_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                },
                "required": [
                  "locale_name",
                  "locale_code"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.7.0"
      }
    },
    "/accounts/{account_id}/job_templates/{job_template_id}/locales/{job_template_locale_id}": {
      "get": {
        "summary": "Get a single organization job template locale",
        "description": "Get a single job template locale for a given organization job template.",
        "operationId": "organization_job_template_locale/show",
        "tags": [
          "Organization Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/job_template_locale_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_locales"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:job_template_id/locales/:job_template_locale_id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_template_locales show \\\n--account_id <account_id> \\\n--job_template_id <job_template_id> \\\n--job_template_locale_id <job_template_locale_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.7.0"
      },
      "patch": {
        "summary": "Update an organization job template locale",
        "description": "Update an existing organization job template locale.",
        "operationId": "organization_job_template_locale/update",
        "tags": [
          "Organization Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/job_template_locale_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/job_template_locales"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:job_template_id/locales/:job_template_locale_id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"locale_name\":\"de-1\",\"locale_code:\"de-DE\",\"user_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"],\"reviewer_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"],\"translator_team_ids\":[\"abcd1234cdef1234abcd1234cdef1234\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_template_locales update \\\n--account_id <account_id> \\\n--job_template_id <job_template_id> \\\n--job_template_locale_id <job_template_locale_id> \\\n--data '{\"locale_name\": \"de-1\", \"locale_code: \"de-DE\", \"user_ids\": \"abcd1234cdef1234abcd1234cdef1234\", \"reviewer_ids\": \"abcd1234cdef1234abcd1234cdef1234\",\"translator_team_ids\": \"abcd1234cdef1234abcd1234cdef1234\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "organization_job_template_locale/update/parameters",
                "properties": {
                  "locale_name": {
                    "description": "locale name",
                    "type": "string",
                    "example": "de-1"
                  },
                  "locale_code": {
                    "description": "locale code",
                    "type": "string",
                    "example": "de-DE"
                  },
                  "user_ids": {
                    "description": "Array of user ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_ids": {
                    "description": "Array of reviewer ids to be assigned to the job template locale",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "translator_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as translators",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "reviewer_team_ids": {
                    "description": "Array of team ids to be assigned to the job locale as reviewers",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.7.0"
      },
      "delete": {
        "summary": "Delete an organization job template locale",
        "description": "Delete an existing organization job template locale.",
        "operationId": "organization_job_template_locale/delete",
        "tags": [
          "Organization Job Template Locales"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/job_template_id"
          },
          {
            "$ref": "#/components/parameters/job_template_locale_id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:job_template_id/locales/:job_template_locale_id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_template_locales delete \\\n--account_id <account_id> \\\n--job_template_id <job_template_id> \\\n--job_template_locale_id <job_template_locale_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.7.0"
      }
    },
    "/accounts/{account_id}/job_templates": {
      "get": {
        "summary": "List organization job templates",
        "description": "List all job templates for the given account.",
        "operationId": "organization_job_templates/list",
        "tags": [
          "Organization Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/organization_job_template"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list organization job templates in this account, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_templates list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.7.0"
      },
      "post": {
        "summary": "Create an organization job template",
        "description": "Create a new organization job template.",
        "operationId": "organization_job_template/create",
        "tags": [
          "Organization Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/organization_job_template_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create organization job templates, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"template\",\"briefing\":\"text\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_templates create \\\n--account_id <account_id> \\\n--data '{\"name\":\"template\", \"briefing\":\"text\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "organization_job_template/create/parameters",
                "properties": {
                  "name": {
                    "description": "Job template name",
                    "type": "string",
                    "example": "template"
                  },
                  "briefing": {
                    "description": "Briefing for the translators",
                    "type": "string",
                    "example": "text"
                  },
                  "autotranslate": {
                    "description": "Automatically translate the job using machine translation.",
                    "type": "boolean",
                    "example": true
                  },
                  "owner_id": {
                    "description": "Code of the account member to set as the job template owner. When omitted\nor blank, no owner is pre-set; the user who creates a job from this template\nis assigned as its owner at job-creation time.\n",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.7.0"
      }
    },
    "/accounts/{account_id}/job_templates/{id}": {
      "get": {
        "summary": "Get a single organization job template",
        "description": "Get details on a single organization job template for a given account.",
        "operationId": "organization_job_templates/show",
        "tags": [
          "Organization Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/organization_job_template_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this organization job template, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_templates show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.7.0"
      },
      "patch": {
        "summary": "Update an organization job template",
        "description": "Update an existing organization job template.",
        "operationId": "organization_job_template/update",
        "tags": [
          "Organization Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/organization_job_template_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this organization job template, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_templates update \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "organization_job_template/update/parameters",
                "properties": {
                  "name": {
                    "description": "Job template name",
                    "type": "string",
                    "example": "template"
                  },
                  "briefing": {
                    "description": "Briefing for the translators",
                    "type": "string",
                    "example": "text"
                  },
                  "autotranslate": {
                    "description": "Automatically translate the job using machine translation.",
                    "type": "boolean",
                    "example": true
                  },
                  "owner_id": {
                    "description": "Code of the account member to set as the job template owner.\nPass an empty string to clear a previously set owner; when blank,\nthe owner is set to null and jobs created from this template will\ndefault to assigning the job creator as owner.\n",
                    "type": "string"
                  }
                },
                "required": [
                  "name"
                ]
              }
            }
          }
        },
        "x-cli-version": "2.7.0"
      },
      "delete": {
        "summary": "Delete an organization job template",
        "description": "Delete an existing organization job template.",
        "operationId": "organization_job_template/delete",
        "tags": [
          "Organization Job Templates"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this organization job template, or when the account does not have the Job Templates feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/job_templates/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase organization_job_templates delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.7.0"
      }
    },
    "/projects/{project_id}/pre_translations": {
      "get": {
        "summary": "List pre-translation jobs",
        "description": "Returns all pre-translation jobs scoped to a project, ordered by\ncreation date descending.\n",
        "operationId": "pre_translations/list",
        "tags": [
          "Pre Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/If-Modified-Since"
          },
          {
            "$ref": "#/components/parameters/If-None-Match"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/pre_translation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list pre-translation jobs in this project, or when the account does not have the `autopilot` plan feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      },
      "post": {
        "summary": "Create a pre-translation job",
        "description": "Triggers a pre-translation job for a resource within a project, addressed\nby `translatable_type` (`locale`, `job`, `translation_key`, or `upload`)\nand `translatable_id` (its ID).\n\nEnqueues machine translation using the project's configured MT engine.\n",
        "operationId": "pre_translation/create",
        "tags": [
          "Pre Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "pre_translation/create/parameters",
                "properties": {
                  "translatable_type": {
                    "type": "string",
                    "enum": [
                      "locale",
                      "job",
                      "translation_key",
                      "upload"
                    ],
                    "description": "Resource type to pre-translate."
                  },
                  "translatable_id": {
                    "type": "string",
                    "description": "ID of the targeted resource: locale ID for `locale`, job ID for `job`, key ID for `translation_key`, upload ID for `upload`.\n"
                  }
                },
                "example": {
                  "translatable_type": "locale",
                  "translatable_id": "abcd1234cdef1234abcd1234cdef1234"
                }
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Accepted",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/pre_translation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create pre-translation jobs in this project, when the project is protected, or when the account does not have the `autopilot` plan feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      }
    },
    "/projects/{project_id}/pre_translations/{id}": {
      "get": {
        "summary": "Get a single pre-translation job",
        "description": "Returns a single pre-translation job identified by its ID.\n",
        "operationId": "pre_translation/show",
        "tags": [
          "Pre Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/If-Modified-Since"
          },
          {
            "$ref": "#/components/parameters/If-None-Match"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/pre_translation"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read pre-translation jobs in this project, or when the account does not have the `autopilot` plan feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        }
      }
    },
    "/projects": {
      "get": {
        "summary": "List projects",
        "description": "List all projects the current user has access to.\n\nWhen the `account_id` query parameter is omitted, the response includes projects across every account the user is a member of. Pass `account_id` to scope the results to a single account.\n",
        "operationId": "projects/list",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "$ref": "#/components/parameters/query_account_id"
          },
          {
            "description": "Sort projects. Valid values are `name_asc`, `name_desc`, `updated_at_asc`, `updated_at_desc`, `space_asc`, and `space_desc`. The trailing direction segment is optional; if omitted or invalid, projects are sorted ascending. Any other value is ignored and the default ordering is returned.",
            "name": "sort_by",
            "in": "query",
            "schema": {
              "type": "string",
              "enum": [
                "name_asc",
                "name_desc",
                "updated_at_asc",
                "updated_at_desc",
                "space_asc",
                "space_desc"
              ]
            }
          },
          {
            "description": "Filter projects. The only supported value is `favorites`, which restricts the results to projects the current user has starred.",
            "example": "favorites",
            "name": "filters",
            "in": "query",
            "schema": {
              "type": "array",
              "items": {
                "type": "string",
                "enum": [
                  "favorites"
                ]
              }
            }
          },
          {
            "description": "Search query. The only supported syntax is `name:<text>` — for example `name:android` returns projects whose name matches `android` (case-insensitive substring). Any value that does not match the `name:` prefix is ignored.",
            "name": "q",
            "in": "query",
            "example": "name:android",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/project"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not confirmed."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase projects list \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a project",
        "description": "Create a new project in the given account.\n\nWhen `source_project_id` is supplied, the new project is created as a clone of that project. All locales, keys, and translations are copied asynchronously after the response is returned, so they may not be available immediately. Settings from the source project are inherited unless explicitly overridden in the request; in clone mode, the `shares_translation_memory` field is ignored and inherited from the source.\n\n`shares_translation_memory` defaults to `true` when omitted on a non-clone create.\n",
        "operationId": "project/create",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/project_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create projects in the target account."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F name=My%20Android%20Project \\\n  -F main_format=yml \\\n  -F shares_translation_memory=true"
          },
          {
            "lang": "CLI v2",
            "source": "phrase projects create \\\n--data '{\"name\": \"My Android Project\", \"main_format\":\"yml\", \"shares_translation_memory\":true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "project/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the project",
                    "type": "string",
                    "example": "My Android Project"
                  },
                  "main_format": {
                    "description": "Main file format specified by its API Extension name. Used for locale downloads if no format is specified. For API Extension names of available file formats see [Format Guide](https://support.phrase.com/hc/en-us/sections/6111343326364) or our [Formats API Endpoint](/en/api/strings/formats/list-formats).",
                    "type": "string",
                    "example": "yml"
                  },
                  "media": {
                    "description": "(Optional) Main technology stack used in the project. It affects for example the suggested placeholder style. Predefined values include: `Ruby`, `JavaScript`, `AngularJS`, `React`, `iOS`, `Android`, `Python`, `PHP`, `Java`, `Go`, `Windows Phone`, `Rails`, `Node.js`, `.NET`, `Django`, `Symfony`, `Yii Framework`, `Zend Framework`, `Apple App Store Description`, `Google Play Description`, but it can also take any other value.",
                    "type": "string",
                    "example": "Python"
                  },
                  "shares_translation_memory": {
                    "description": "Indicates whether the project should share the account's translation memory",
                    "type": "boolean",
                    "example": true
                  },
                  "tm_ids": {
                    "description": "List of TMS translation memory IDs, used to provide reference translations for the AI translation agent.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "term_base_ids": {
                    "description": "List of TMS term base IDs, used to ensure consistent terminology for the AI translation agent.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "project_image": {
                    "description": "Image to identify the project",
                    "type": "string",
                    "format": "binary",
                    "example": "/path/to/my/project-screenshot.png"
                  },
                  "remove_project_image": {
                    "description": "Indicates whether the project image should be deleted.",
                    "type": "boolean",
                    "example": null
                  },
                  "account_id": {
                    "description": "Account ID to specify the actual account the project should be created in. Required if the requesting user is a member of multiple accounts.",
                    "type": "string",
                    "example": "abcd1234"
                  },
                  "point_of_contact": {
                    "description": "(Optional) User ID of the point of contact for the project.",
                    "type": "string",
                    "example": "abcd1234"
                  },
                  "source_project_id": {
                    "description": "When a source project ID is given, a clone of that project will be created, including all locales, keys and translations as well as the main project settings if they are not defined otherwise through the params.",
                    "type": "string",
                    "example": "abcd1234"
                  },
                  "workflow": {
                    "description": "(Optional) Review Workflow. \"simple\" / \"review\". [Read more](https://support.phrase.com/hc/en-us/articles/5784094755484)",
                    "type": "string",
                    "example": "review"
                  },
                  "machine_translation_enabled": {
                    "description": "(Optional) Enable machine translation support in the project. Required for Pre-Translation",
                    "type": "boolean",
                    "example": true
                  },
                  "enable_branching": {
                    "description": "(Optional) Enable branching in the project",
                    "type": "boolean",
                    "example": true
                  },
                  "protect_master_branch": {
                    "description": "(Optional) Protect the master branch in project where branching is enabled",
                    "type": "boolean",
                    "example": true
                  },
                  "enable_all_data_type_translation_keys_for_translators": {
                    "description": "(Optional) Otherwise, translators are not allowed to edit translations other than strings",
                    "type": "boolean",
                    "example": true
                  },
                  "enable_icu_message_format": {
                    "description": "(Optional) We can validate and highlight your ICU messages. [Read more](https://support.phrase.com/hc/en-us/articles/5822319545116)",
                    "type": "boolean",
                    "example": true
                  },
                  "zero_plural_form_enabled": {
                    "description": "(Optional) Displays the input fields for the 'ZERO' plural form for every key as well although only some languages require the 'ZERO' explicitly.",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_enabled": {
                    "description": "(Optional) Autopilot, requires machine_translation_enabled. [Read more](https://support.phrase.com/hc/en-us/articles/5822187934364)",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_check_new_translation_keys": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_check_new_uploads": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_check_new_locales": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_mark_as_unverified": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_use_machine_translation": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_use_translation_memory": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_overwrite_unverified_translations": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "fallback_for_unverified_translations": {
                    "description": "(Optional) When enabled, the fallback locale's translation is used on export for unverified translations in addition to empty ones. Requires a fallback locale to be configured on the locale.",
                    "type": "boolean",
                    "example": false
                  },
                  "autocomplete_job_enabled": {
                    "description": "(Optional) Enable autocomplete-job behavior so that newly created keys and locales are automatically added to in-progress jobs.",
                    "type": "boolean",
                    "example": false
                  },
                  "job_locking_enabled": {
                    "description": "(Optional) When enabled, translations are locked once a job moves into review.",
                    "type": "boolean",
                    "example": false
                  },
                  "smart_suggest_enabled": {
                    "description": "(Optional) Enable Smart Suggest for the project. Defaults to `true` when omitted.",
                    "type": "boolean",
                    "example": true
                  },
                  "smart_suggest_use_glossary": {
                    "description": "(Optional) Allow Smart Suggest to source suggestions from the project glossary. Defaults to `true` when omitted.",
                    "type": "boolean",
                    "example": true
                  },
                  "smart_suggest_use_machine_translation": {
                    "description": "(Optional) Allow Smart Suggest to source suggestions from machine translation. Defaults to `true` when omitted.",
                    "type": "boolean",
                    "example": true
                  },
                  "translation_keys_sort_collation": {
                    "description": "(Optional) Collation used when sorting translation keys alphabetically. Defaults to `unicode_ci` when omitted.",
                    "type": "string",
                    "example": "unicode_ci",
                    "enum": [
                      "general_ci",
                      "unicode_ci"
                    ]
                  },
                  "default_encoding": {
                    "description": "(Optional) Sets the default encoding for Uploads. If you leave it empty, we will try to guess it automatically for you when you Upload a file. You can still override this value by setting the [`file_encoding`](/en/api/strings/uploads/upload-a-new-file) parameter for Uploads.",
                    "type": "string",
                    "example": "UTF-8",
                    "enum": [
                      "UTF-8",
                      "UTF-16",
                      "UTF-16BE",
                      "UTF-16LE",
                      "ISO-8859-1"
                    ]
                  },
                  "cldr_version": {
                    "description": "(Optional) CLDR plural-rule version used by the project. Pass `legacy` for pre-CLDR pluralization behaviour, or a CLDR version string such as `cldr48`. Also used as the default version for the ICU skeleton endpoint (`POST /icu/skeleton`) when its own `cldr_version` parameter is omitted.",
                    "type": "string",
                    "example": "cldr48"
                  },
                  "placeholder_styles": {
                    "description": "(Optional) List of placeholder styles enabled for the project.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/placeholder_style"
                    },
                    "example": [
                      "rails_i18n",
                      "java_properties"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.6.3"
      }
    },
    "/projects/{id}": {
      "get": {
        "summary": "Get a single project",
        "description": "Get details on a single project.",
        "operationId": "project/show",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/project_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase projects show \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a project",
        "description": "Update an existing project, including its review workflow, pre-translation/autotranslate\nrules, and machine-translation configuration (see workflow, machine_translation_enabled,\nand the autotranslate_* fields below).",
        "operationId": "project/update",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/project_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to manage this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -F name=My%20Android%20Project \\\n  -F main_format=yml \\\n  -F shares_translation_memory=true"
          },
          {
            "lang": "CLI v2",
            "source": "phrase projects update \\\n--id <id> \\\n--data '{\"name\": \"My Android Project\", \"main_format\":\"yml\", \"shares_translation_memory\":true}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "project/update/parameters",
                "properties": {
                  "account_id": {
                    "description": "(Optional) ID of an account the requesting user belongs to. Used only to disambiguate the request context; the project itself cannot be moved between accounts through this endpoint.\n",
                    "type": "string",
                    "example": "abcd1234"
                  },
                  "name": {
                    "description": "(Optional) Name of the project",
                    "type": "string",
                    "example": "My Android Project"
                  },
                  "point_of_contact": {
                    "description": "(Optional) User ID of the point of contact for the project. Pass `null` to unset.",
                    "type": "string",
                    "example": "abcd1234"
                  },
                  "main_format": {
                    "description": "(Optional) Main file format specified by its API Extension name. Used for locale downloads if no format is specified. For API Extension names of available file formats see [Format Guide](https://support.phrase.com/hc/en-us/sections/6111343326364) or our [Formats API Endpoint](#formats).",
                    "type": "string",
                    "example": "yml"
                  },
                  "media": {
                    "description": "(Optional) Main technology stack used in the project. It affects for example the suggested placeholder style. Predefined values include: `Ruby`, `JavaScript`, `AngularJS`, `React`, `iOS`, `Android`, `Python`, `PHP`, `Java`, `Go`, `Windows Phone`, `Rails`, `Node.js`, `.NET`, `Django`, `Symfony`, `Yii Framework`, `Zend Framework`, `Apple App Store Description`, `Google Play Description`, but it can also take any other value.",
                    "type": "string",
                    "example": "Python"
                  },
                  "shares_translation_memory": {
                    "description": "(Optional) Indicates whether the project should share the account's translation memory",
                    "type": "boolean",
                    "example": true
                  },
                  "tm_ids": {
                    "description": "List of TMS translation memory IDs, used to provide reference translations for the AI translation agent.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "term_base_ids": {
                    "description": "List of TMS term base IDs, used to ensure consistent terminology for the AI translation agent.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234"
                    ]
                  },
                  "project_image": {
                    "description": "(Optional) Image to identify the project",
                    "type": "string",
                    "format": "binary",
                    "example": "/path/to/my/project-screenshot.png"
                  },
                  "remove_project_image": {
                    "description": "(Optional) Indicates whether the project image should be deleted.",
                    "type": "boolean",
                    "example": false
                  },
                  "workflow": {
                    "description": "(Optional) Review Workflow. \"simple\" / \"review\". [Read more](https://support.phrase.com/hc/en-us/articles/5784094755484)",
                    "type": "string",
                    "example": "review"
                  },
                  "machine_translation_enabled": {
                    "description": "(Optional) Enable machine translation support in the project. Required for Pre-Translation",
                    "type": "boolean",
                    "example": true
                  },
                  "enable_branching": {
                    "description": "(Optional) Enable branching in the project",
                    "type": "boolean",
                    "example": true
                  },
                  "protect_master_branch": {
                    "description": "(Optional) Protect the master branch in project where branching is enabled",
                    "type": "boolean",
                    "example": true
                  },
                  "enable_all_data_type_translation_keys_for_translators": {
                    "description": "(Optional) Otherwise, translators are not allowed to edit translations other than strings",
                    "type": "boolean",
                    "example": true
                  },
                  "enable_icu_message_format": {
                    "description": "(Optional) We can validate and highlight your ICU messages. [Read more](https://support.phrase.com/hc/en-us/articles/5822319545116)",
                    "type": "boolean",
                    "example": true
                  },
                  "zero_plural_form_enabled": {
                    "description": "(Optional) Displays the input fields for the 'ZERO' plural form for every key as well although only some languages require the 'ZERO' explicitly.",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_enabled": {
                    "description": "(Optional) Autopilot, requires machine_translation_enabled. [Read more](https://support.phrase.com/hc/en-us/articles/5822187934364)",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_check_new_translation_keys": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_check_new_uploads": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_check_new_locales": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_mark_as_unverified": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_use_machine_translation": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_use_translation_memory": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "autotranslate_overwrite_unverified_translations": {
                    "description": "(Optional) Requires autotranslate_enabled to be true",
                    "type": "boolean",
                    "example": true
                  },
                  "fallback_for_unverified_translations": {
                    "description": "(Optional) When enabled, the fallback locale's translation is used on export for unverified translations in addition to empty ones. Requires a fallback locale to be configured on the locale.",
                    "type": "boolean",
                    "example": false
                  },
                  "default_encoding": {
                    "description": "(Optional) Sets the default encoding for Uploads. If you leave it empty, we will try to guess it automatically for you when you Upload a file. You can still override this value by setting the [`file_encoding`](/en/api/strings/uploads/upload-a-new-file) parameter for Uploads.",
                    "type": "string",
                    "example": "UTF-8",
                    "enum": [
                      "UTF-8",
                      "UTF-16",
                      "UTF-16BE",
                      "UTF-16LE",
                      "ISO-8859-1"
                    ]
                  },
                  "placeholder_styles": {
                    "description": "(Optional) List of placeholder styles enabled for the project.",
                    "type": "array",
                    "items": {
                      "$ref": "#/components/schemas/placeholder_style"
                    },
                    "example": [
                      "rails_i18n",
                      "java_properties"
                    ]
                  },
                  "autocomplete_job_enabled": {
                    "description": "(Optional) Enable autocomplete-job behavior so that newly created keys and locales are automatically added to in-progress jobs.",
                    "type": "boolean",
                    "example": false
                  },
                  "job_locking_enabled": {
                    "description": "(Optional) When enabled, translations are locked once a job moves into review.",
                    "type": "boolean",
                    "example": false
                  },
                  "smart_suggest_enabled": {
                    "description": "(Optional) Enable Smart Suggest for the project.",
                    "type": "boolean",
                    "example": true
                  },
                  "smart_suggest_use_glossary": {
                    "description": "(Optional) Allow Smart Suggest to source suggestions from the project glossary.",
                    "type": "boolean",
                    "example": true
                  },
                  "smart_suggest_use_machine_translation": {
                    "description": "(Optional) Allow Smart Suggest to source suggestions from machine translation.",
                    "type": "boolean",
                    "example": true
                  },
                  "translation_keys_sort_collation": {
                    "description": "(Optional) Collation used when sorting translation keys alphabetically.",
                    "type": "string",
                    "example": "unicode_ci",
                    "enum": [
                      "general_ci",
                      "unicode_ci"
                    ]
                  },
                  "cldr_version": {
                    "description": "(Optional) CLDR plural-rule version used by the project. Pass `legacy` for pre-CLDR pluralization behaviour, or a CLDR version string such as `cldr48`. Also used as the default version for the ICU skeleton endpoint (`POST /icu/skeleton`) when its own `cldr_version` parameter is omitted.",
                    "type": "string",
                    "example": "legacy"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.6.3"
      },
      "delete": {
        "summary": "Delete a project",
        "description": "Delete an existing project. Associated repository syncs and OTA distributions are removed. A `project:delete` event is dispatched.\n",
        "operationId": "project/delete",
        "tags": [
          "Projects"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to manage this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase projects delete \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/quality_performance_score": {
      "post": {
        "summary": "Get Translation Quality",
        "description": "Retrieves the quality scores for your Strings translations. Returns a score, measured by Phrase QPS",
        "operationId": "quality_performance_score/list",
        "tags": [
          "Quality performance score"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "anyOf": [
                    {
                      "type": "object",
                      "title": "error",
                      "description": "Error field for when the request completely fails",
                      "properties": {
                        "error": {
                          "type": "object",
                          "properties": {
                            "message": {
                              "type": "string"
                            },
                            "code": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    },
                    {
                      "type": "object",
                      "properties": {
                        "data": {
                          "type": "object",
                          "properties": {
                            "translations": {
                              "type": "array",
                              "items": {
                                "type": "object",
                                "properties": {
                                  "engine": {
                                    "type": "string",
                                    "description": "Engine used for the translation scoring"
                                  },
                                  "score": {
                                    "type": "number",
                                    "description": "Quality score for the translation"
                                  },
                                  "id": {
                                    "type": "string",
                                    "description": "One of the translation ids passed in arguments"
                                  }
                                }
                              }
                            }
                          }
                        },
                        "errors": {
                          "type": "array",
                          "description": "Array of errors for any failing translation IDs",
                          "items": {
                            "type": "object",
                            "properties": {
                              "message": {
                                "type": "string"
                              },
                              "code": {
                                "type": "string"
                              },
                              "id": {
                                "type": "string",
                                "description": "One of the translation ids passed in arguments"
                              }
                            }
                          }
                        }
                      }
                    }
                  ],
                  "example": {
                    "data": {
                      "translations": [
                        {
                          "engine": "qe_v4",
                          "score": 0.78,
                          "id": "translation_id_1"
                        },
                        {
                          "engine": "qe_v4",
                          "score": 0.95,
                          "id": "translation_id_2"
                        }
                      ]
                    },
                    "errors": []
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          },
          "504": {
            "$ref": "#/components/responses/504"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/quality_performance_score\" \\\n  -X POST \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -d '{\"translation_ids\":[\"translation_id_1\", \"translation_id_2\"]}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase quality_performance_score list \\\n--project_id <project_id> \\\n--data '{\"translation_ids\":[\"translation_id_1\", \"translation_id_2\"]}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "properties": {
                  "translation_ids": {
                    "description": "Translation ids you want to get the quality performance score for",
                    "type": "array",
                    "items": {
                      "type": "string",
                      "example": "translation_id_1"
                    }
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.20"
      }
    },
    "/accounts/{account_id}/distributions/{distribution_id}/release_triggers": {
      "get": {
        "summary": "List release triggers",
        "description": "List all release triggers for the given distribution.\n\nNote: Currently only one release trigger can exist per distribution.\n",
        "operationId": "release_triggers/list",
        "tags": [
          "Release Triggers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/release_trigger"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/release_triggers\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase release_triggers list \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.28"
      },
      "post": {
        "summary": "Create a release trigger",
        "description": "Create a new recurring release. New releases will be published automatically, based on the cron schedule provided. Currently, only one release trigger can exist per distribution.",
        "operationId": "release_triggers/create",
        "tags": [
          "Release Triggers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "release/create/parameters",
                "properties": {
                  "cron_schedule": {
                    "description": "Cron schedule for the scheduler. Read more about the format of this field at https://en.wikipedia.org/wiki/Cron",
                    "type": "string",
                    "example": "15 18 * * 1,3"
                  },
                  "time_zone": {
                    "description": "Time zone for the scheduler",
                    "type": "string",
                    "example": "Europe/Berlin"
                  },
                  "locale_ids": {
                    "description": "List of locale ids that will be included in the release.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "fff565db236400772368235db2c6117e"
                    ]
                  },
                  "tags": {
                    "description": "Only include tagged keys in the release. For a key to be included it must be tagged with all tags provided",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "feature1"
                    ]
                  },
                  "branch": {
                    "description": "Branch used for release",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "app_min_version": {
                    "description": "The created releases will be available only for apps with version greater or equal to this value",
                    "type": "string",
                    "example": "1.0.0"
                  },
                  "app_max_version": {
                    "description": "The created releases will be available only for apps with version less or equal to this value",
                    "type": "string",
                    "example": "2.0.0"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release_trigger"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/release_triggers\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"cron_schedule\":\"15 18 * * 1,3\",\"time_zone\":\"Europe/Berlin\",\"locale_ids\":[\"abcd1234cdef1234abcd1234cdef1234\",\"fff565db236400772368235db2c6117e\"],\"tags\":[\"android\",\"feature1\"],\"branch\":\"my-feature-branch\",\"app_min_version\":\"1.0.0\",\"app_max_version\":\"2.0.0\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase release_triggers create \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--data '{\"cron_schedule\":\"15 18 * * 1,3\",\"time_zone\":\"Europe/Berlin\",\"locale_ids\":[\"abcd1234cdef1234abcd1234cdef1234\",\"fff565db236400772368235db2c6117e\"],\"tags\":[\"android\",\"feature1\"],\"branch\":\"my-feature-branch\",\"app_min_version\":\"1.0.0\",\"app_max_version\":\"2.0.0\"}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.28"
      }
    },
    "/accounts/{account_id}/distributions/{distribution_id}/release_triggers/{id}": {
      "get": {
        "summary": "Get a single release trigger",
        "description": "Get details of a single release trigger.",
        "operationId": "release_triggers/show",
        "tags": [
          "Release Triggers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release_trigger"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/release_triggers/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase release_triggers show \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.28"
      },
      "patch": {
        "summary": "Update a release trigger",
        "description": "Update a recurring release.",
        "operationId": "release_triggers/update",
        "tags": [
          "Release Triggers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "release/update/parameters",
                "properties": {
                  "cron_schedule": {
                    "description": "Cron schedule for the scheduler. Read more about the format of this field at https://en.wikipedia.org/wiki/Cron",
                    "type": "string",
                    "example": "15 18 * * 1,3"
                  },
                  "time_zone": {
                    "description": "Time zone for the scheduler",
                    "type": "string",
                    "example": "Europe/Berlin"
                  },
                  "locale_ids": {
                    "description": "List of locale ids that will be included in the release.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "fff565db236400772368235db2c6117e"
                    ]
                  },
                  "tags": {
                    "description": "Only include tagged keys in the release. For a key to be included it must be tagged with all tags provided",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "feature1"
                    ]
                  },
                  "branch": {
                    "description": "Branch used for release",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "app_min_version": {
                    "description": "The created releases will be available only for apps with version greater or equal to this value",
                    "type": "string",
                    "example": "1.0.0"
                  },
                  "app_max_version": {
                    "description": "The created releases will be available only for apps with version less or equal to this value",
                    "type": "string",
                    "example": "2.0.0"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release_trigger"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/release_triggers/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"cron_schedule\":\"15 18 * * 1,3\",\"time_zone\":\"Europe/Berlin\",\"locale_ids\":[\"abcd1234cdef1234abcd1234cdef1234\",\"fff565db236400772368235db2c6117e\"],\"tags\":[\"android\",\"feature1\"],\"branch\":\"my-feature-branch\",\"app_min_version\":\"1.0.0\",\"app_max_version\":\"2.0.0\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase release_triggers update \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--data '{\"cron_schedule\":\"15 18 * * 1,3\",\"time_zone\":\"Europe/Berlin\",\"locale_ids\":[\"abcd1234cdef1234abcd1234cdef1234\",\"fff565db236400772368235db2c6117e\"],\"tags\":[\"android\",\"feature1\"],\"branch\":\"my-feature-branch\",\"app_min_version\":\"1.0.0\",\"app_max_version\":\"2.0.0\"}' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.28"
      },
      "delete": {
        "summary": "Delete a single release trigger",
        "description": "Delete a single release trigger.",
        "operationId": "release_triggers/destroy",
        "tags": [
          "Release Triggers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/release_triggers/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase release_triggers delete \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.28"
      }
    },
    "/accounts/{account_id}/distributions/{distribution_id}/releases": {
      "get": {
        "summary": "List releases",
        "description": "List all releases for the given distribution.",
        "operationId": "releases/list",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/release_preview"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, or when the requesting user is not allowed to list releases in this distribution."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/releases\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase releases list \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a release",
        "description": "Create a new release.",
        "operationId": "release/create",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, or when the requesting user is not allowed to create releases in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/releases\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"description\":\"My first Release\",\"platforms\":[\"android\",\"ios\"],\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase releases create \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--data '{\"description\": \"My first Release\", \"platforms\": [\"android\", \"ios\"], \"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "release/create/parameters",
                "properties": {
                  "description": {
                    "description": "Description of the release",
                    "type": "string",
                    "example": "My first Release"
                  },
                  "platforms": {
                    "description": "List of platforms the release should support.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "ios"
                    ]
                  },
                  "locale_ids": {
                    "description": "List of locale ids that will be included in the release. If empty, distribution locales will be used",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "fff565db236400772368235db2c6117e"
                    ]
                  },
                  "tags": {
                    "description": "Only include tagged keys in the release. For a key to be included it must be tagged with all tags provided",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "feature1"
                    ]
                  },
                  "app_min_version": {
                    "description": "Minimum version of the app that the release supports in semver format",
                    "type": "string",
                    "example": "2.5.0"
                  },
                  "app_max_version": {
                    "description": "Maximum version of the app that the release supports in semver format",
                    "type": "string",
                    "example": "3.0.0"
                  },
                  "branch": {
                    "description": "Branch used for release",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.8"
      }
    },
    "/accounts/{account_id}/distributions/{distribution_id}/releases/{id}": {
      "get": {
        "summary": "Get a single release",
        "description": "Get details on a single release.",
        "operationId": "release/show",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, or when the requesting user is not allowed to read this release."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/releases/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase releases show \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a release",
        "description": "Update an existing release.",
        "operationId": "release/update",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, or when the requesting user is not allowed to update this release."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/releases/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"description\":\"My first Release\",\"platforms\":[\"android\",\"ios\"],\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase releases update \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--data '{\"description\": \"My first Release\", \"platforms\": \"android,ios\", \"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "release/update/parameters",
                "properties": {
                  "description": {
                    "description": "Description of the release",
                    "type": "string",
                    "example": "My first Release"
                  },
                  "platforms": {
                    "description": "List of platforms the release should support.",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "android",
                      "ios"
                    ]
                  },
                  "app_min_version": {
                    "description": "Minimum version of the app that the release supports in semver format",
                    "type": "string",
                    "example": "2.5.0"
                  },
                  "app_max_version": {
                    "description": "Maximum version of the app that the release supports in semver format",
                    "type": "string",
                    "example": "3.0.0"
                  },
                  "branch": {
                    "description": "Branch used for release",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a release",
        "description": "Delete an existing release.",
        "operationId": "release/delete",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, or when the requesting user is not allowed to delete this release."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/releases/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase releases delete \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/distributions/{distribution_id}/releases/{id}/publish": {
      "post": {
        "summary": "Publish a release",
        "description": "Publish a release for production.",
        "operationId": "release/publish",
        "tags": [
          "Releases"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/distribution_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/release"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, or when the requesting user is not allowed to publish this release."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/distributions/:distribution_id/releases/:id/publish\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST"
          },
          {
            "lang": "CLI v2",
            "source": "phrase releases publish \\\n--account_id <account_id> \\\n--distribution_id <distribution_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/repo_syncs/{id}/events": {
      "get": {
        "summary": "Repository Syncs History",
        "description": "Get the history of a single Repo Sync. The history includes all imports and exports\nperformed by the Repo Sync.",
        "operationId": "repo_sync_event/list",
        "tags": [
          "Repo Sync Events"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful response",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/repo_sync_event"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/56ef78/events\"\\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_sync_events list \\\n--id <id> \\\n--account_id abcd1234 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.24"
      }
    },
    "/accounts/{account_id}/repo_syncs/{repo_sync_id}/events/{id}": {
      "get": {
        "summary": "Get a single Repo Sync Event",
        "description": "Shows a single Repo Sync event.",
        "operationId": "repo_sync_event/show",
        "tags": [
          "Repo Sync Events"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/repo_sync_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync_event"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/56ef78/events/78dfgj\"\\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_sync_events show \\\n--id <id> \\\n--repo_sync_id <repo_sync_id> \\\n--account_id abcd1234 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.24"
      }
    },
    "/accounts/{account_id}/repo_syncs": {
      "get": {
        "summary": "Get Repo Syncs",
        "description": "Lists all Repo Syncs from an account",
        "operationId": "repo_sync/list",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/repo_sync"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read git syncs in this account, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs\"\\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs list \\\n--account_id abcd1234 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.24"
      },
      "post": {
        "summary": "Create a Repo Sync",
        "description": "Create a new Repo Sync.",
        "operationId": "repo_sync/create",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to manage git syncs in this account, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json' \\\n  -d '{\n    \"project_id\": \"abcd1234abcd1234abcd1234abcd1234\",\n    \"git_provider\": \"github\",\n    \"connection_type\": \"github_app\",\n    \"repo_name\": \"my-org/my-repo\",\n    \"base_branch\": \"main\"\n  }'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs create \\\n--account_id abcd1234 \\\n--data '{\"project_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"git_provider\":\"github\",\"connection_type\":\"github_app\",\"repo_name\":\"my-org/my-repo\",\"base_branch\":\"main\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "repo_sync/create/parameters",
                "required": [
                  "project_id",
                  "repo_name",
                  "connection_type"
                ],
                "properties": {
                  "project_id": {
                    "description": "ID of the project to connect the Repo Sync to.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "name": {
                    "description": "Optional custom display name for this repo sync. Defaults to null; when null the project name is used as the display name.\n",
                    "type": "string",
                    "nullable": true,
                    "maxLength": 100
                  },
                  "git_provider": {
                    "description": "The Git provider to use.",
                    "default": "github",
                    "type": "string",
                    "enum": [
                      "github",
                      "gitlab",
                      "bitbucket"
                    ],
                    "example": "github"
                  },
                  "connection_type": {
                    "description": "The authentication method used to connect to the Git provider.\nDefaults to `token` if not specified.\n\nValid values:\n- `token` — Personal access token stored on the Repo Sync. Supported by all providers.\n- `github_app` — Authenticate via the Phrase GitHub App installation on your account. GitHub only. The account must already have the GitHub App installed; if not, the response will include a `github_app_installation_url`.\n- `self_hosted` — Token-based auth for self-hosted Git instances. Requires `custom_api_endpoint`.",
                    "type": "string",
                    "enum": [
                      "token",
                      "github_app",
                      "self_hosted"
                    ],
                    "example": "github_app"
                  },
                  "repo_name": {
                    "description": "Full repository name including the owner, e.g. `my-org/my-repo`.",
                    "type": "string",
                    "example": "my-org/my-repo"
                  },
                  "base_branch": {
                    "description": "The default branch to use for imports and exports.",
                    "type": "string",
                    "example": "main"
                  },
                  "pr_branch": {
                    "description": "Branch that translations are exported to before opening a pull request. If omitted, exports go directly to `base_branch`.",
                    "type": "string",
                    "example": "phrase-translations"
                  },
                  "auto_import": {
                    "description": "Enable automatic import of translations triggered by pushes to the repository.",
                    "type": "boolean",
                    "example": false
                  },
                  "access_token": {
                    "description": "Personal access token for the Git provider. Required when `connection_type` is `token` or `self_hosted`. Not used for `github_app`.",
                    "type": "string",
                    "example": "ghp_xxxxxxxxxxxxxxxxxxxx"
                  },
                  "custom_api_endpoint": {
                    "description": "Custom API endpoint URL for self-hosted Git instances. Required when `connection_type` is `self_hosted`.",
                    "type": "string",
                    "example": "https://git.example.com/api/v4"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.60"
      }
    },
    "/accounts/{account_id}/repo_syncs/{id}": {
      "get": {
        "summary": "Get a single Repo Sync",
        "description": "Shows a single Repo Sync setting.",
        "operationId": "repo_sync/show",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read git syncs in this account, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/56ef78\"\\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs show \\\n--id <id> \\\n--account_id abcd1234 \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.24"
      }
    },
    "/accounts/{account_id}/repo_syncs/{id}/export": {
      "post": {
        "summary": "Export to code repository",
        "description": "Export translations from Phrase Strings to repository provider according to the\n.phrase.yml file within the code repository.\n\n*Export is done asynchronously and may take several seconds depending on the project size.*",
        "operationId": "repo_sync/export",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "repo_sync/export/parameters",
                "properties": {
                  "pr_branch": {
                    "description": "Source branch to open a pull request from",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "branch": {
                    "description": "Strings branch to export from",
                    "type": "string",
                    "example": "my-strings-branch"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync_event"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to export to the synced repository, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/45ef6789/export\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json' \\\n  -d '{\"pr_branch\":\"my-feature-branch\", \"branch\":\"my-strings-branch\"}'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs export \\\n--id <repo_sync_id> \\\n--data '{\"pr_branch\":\"my-feature-branch\", \"branch\":\"my-strings-branch\"}' \\\n--access_token <token>"
          }
        ]
      }
    },
    "/accounts/{account_id}/repo_syncs/{id}/import": {
      "post": {
        "summary": "Import from code repository",
        "description": "Import translations from repository provider to Phrase Strings according to the .phrase.yml file\nwithin the code repository.\n\n_Import is done asynchronously and may take several seconds depending on the project size._",
        "operationId": "repo_sync/import",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "requestBody": {
          "required": false,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "repo_sync/import/parameters",
                "properties": {
                  "repository_branch": {
                    "description": "Branch to import from",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "branch": {
                    "description": "Strings branch to import to",
                    "type": "string",
                    "example": "my-strings-branch"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync_event"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to import from the synced repository, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/45ef6789/import\"\\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"repository_branch\":\"my-feature-branch\", \"branch\":\"my-strings-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs import \\\n--id <repo_sync_id> \\\n--data '{\"repository_branch\":\"my-feature-branch\", \"branch\":\"my-strings-branch\"}' \\\n--access_token <token>"
          }
        ]
      }
    },
    "/accounts/{account_id}/repo_syncs/{id}/deactivate": {
      "post": {
        "summary": "Deactivate a Repo Sync",
        "description": "Deactivate an active Repo Sync. Import and export can't be performed on deactivated syncs\nand the pushes to the repository won't trigger the import to Phrase.",
        "operationId": "repo_sync/deactivate",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to manage git syncs in this account, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/45ef6789/deactivate\"\\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs deactivate \\\n--id <repo_sync_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.24"
      }
    },
    "/accounts/{account_id}/repo_syncs/{id}/activate": {
      "post": {
        "summary": "Activate a Repo Sync",
        "description": "Activate a deactivated Repo Sync. Active syncs can be used to import and export translations,\nand imports to Phrase are automatically triggered by pushes to the repository, if configured.",
        "operationId": "repo_sync/activate",
        "tags": [
          "Repo Syncs"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/repo_sync"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to manage git syncs in this account, or when the account does not have the Repo Sync feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/ab12cd34/repo_syncs/45ef6789/activate\"\\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase repo_syncs activate \\\n--id <repo_sync_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.24"
      }
    },
    "/projects/{project_id}/report": {
      "get": {
        "summary": "Get Project Report",
        "description": "Get report of a single project.",
        "operationId": "report/show",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/project_report"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to view reports for this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/report?branch=my-feature-branch\" \\\n  -X GET \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase report show \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      }
    },
    "/projects/{project_id}/report/locales": {
      "get": {
        "summary": "List Locale Reports (word count, character count, translation statistics)",
        "description": "List all locale reports for the given project. Each report includes translation statistics per locale, including word count and character count fields (`source_word_count`, `word_count`, `word_count_unverified`, `word_count_missing`) as well as translation completion statistics (`keys_count`, `completed_translations_count`, `untranslated_keys_count`, `unverified_translations_count`, `reviewed_translations_count`, and their percentages). Use the `tag` parameter to scope the report to a specific job (e.g. its job tag) to get job-scoped word count statistics.",
        "operationId": "report/locales/list",
        "tags": [
          "Reports"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "$ref": "#/components/parameters/locale_codes"
          },
          {
            "$ref": "#/components/parameters/tag"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/locale_report"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to view reports for this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/report/locales?locale_codes[]=de&locale_codes[]=en&branch=my-feature-branch\" \\\n  -X GET \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase report locales list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--locale_codes de \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.13"
      }
    },
    "/projects/{project_id}/screenshots/{id}/markers": {
      "get": {
        "summary": "List screenshot markers",
        "description": "List all screenshot markers for the given project.",
        "operationId": "screenshot_markers/list",
        "tags": [
          "Screenshot Markers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/screenshot_marker"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read screenshot markers in this project, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots/:id/markers?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshot_markers list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/screenshots/{screenshot_id}/markers/{id}": {
      "get": {
        "summary": "Get a single screenshot marker",
        "description": "Get details on a single screenshot marker for a given project.",
        "operationId": "screenshot_marker/show",
        "tags": [
          "Screenshot Markers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/screenshot_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/screenshot_marker"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this screenshot marker, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots/:screenshot_id/markers/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshot_markers show \\\n--project_id <project_id> \\\n--screenshot_id <screenshot_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/screenshots/{screenshot_id}/markers": {
      "post": {
        "summary": "Create a screenshot marker",
        "description": "Create a new screenshot marker.",
        "operationId": "screenshot_marker/create",
        "tags": [
          "Screenshot Markers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/screenshot_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/screenshot_marker"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create screenshot markers in this project, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots/:screenshot_id/markers\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\", \"key_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"presentation\":\"{ \\\"x\\\": 100, \\\"y\\\": 100, \\\"w\\\": 100, \\\"h\\\": 100 }\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshot_markers create \\\n--project_id <project_id> \\\n--screenshot_id <screenshot_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"key_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"presentation\": \"{ \"x\": 100, \"y\": 100, \"w\": 100, \"h\": 100 }\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "screenshot_marker/create/parameters",
                "required": [
                  "key_id"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "key_id": {
                    "description": "Specify the Key ID which should be highlighted on the specified screenshot. The Key must belong to the project.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "presentation": {
                    "description": "Presentation details of the screenshot marker in JSON format.\n\nEach Screenshot Marker is represented as a rectangular shaped highlight box with the name of the specified Key attached. You can specify the marker position on the screenshot (`x`-axis and `y`-axis in pixels) from the top left corner of the screenshot and the dimensions of the marker itself (`w` and `h` in pixels).\n",
                    "type": "string",
                    "example": "{ \"x\": 100, \"y\": 100, \"w\": 100, \"h\": 100 }"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a screenshot marker",
        "description": "Update an existing screenshot marker.",
        "operationId": "screenshot_marker/update",
        "tags": [
          "Screenshot Markers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/screenshot_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/screenshot_marker"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this screenshot marker, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots/:screenshot_id/markers\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\", \"key_id\":\"abcd1234abcd1234abcd1234abcd1234\",\"presentation\":\"{ \\\"x\\\": 100, \\\"y\\\": 100, \\\"w\\\": 100, \\\"h\\\": 100 }\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshot_markers update \\\n--project_id <project_id> \\\n--screenshot_id <screenshot_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"key_id\":\"abcd1234abcd1234abcd1234abcd1234\", \"presentation\": \"{ \"x\": 100, \"y\": 100, \"w\": 100, \"h\": 100 }\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "screenshot_marker/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "key_id": {
                    "description": "Specify the Key ID which should be highlighted on the specified screenshot. The Key must belong to the project.",
                    "type": "string",
                    "example": "abcd1234abcd1234abcd1234abcd1234"
                  },
                  "presentation": {
                    "description": "Presentation details of the screenshot marker in JSON format.\n\nEach Screenshot Marker is represented as a rectangular shaped highlight box with the name of the specified Key attached. You can specify the marker position on the screenshot (`x`-axis and `y`-axis in pixels) from the top left corner of the screenshot and the dimensions of the marker itself (`w` and `h` in pixels).\n",
                    "type": "string",
                    "example": "{ \"x\": 100, \"y\": 100, \"w\": 100, \"h\": 100 }"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a screenshot marker",
        "description": "Delete an existing screenshot marker.",
        "operationId": "screenshot_marker/delete",
        "tags": [
          "Screenshot Markers"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/screenshot_id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this screenshot marker, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots/:screenshot_id/markers\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshot_markers delete \\\n--project_id <project_id> \\\n--screenshot_id <screenshot_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/screenshots": {
      "get": {
        "summary": "List screenshots",
        "description": "List all screenshots for the given project.",
        "operationId": "screenshots/list",
        "tags": [
          "Screenshots"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "filter by key",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "name": "key_id",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/screenshot"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list screenshots in this project, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshots list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a screenshot",
        "description": "Creates a screenshot in a project to provide visual context for in-context translation. Attach translation keys to regions of the uploaded image so translators can see where each string appears in your UI.\n\nThis endpoint accepts a multipart/form-data request with a binary file upload, unlike most Phrase API endpoints that use JSON. Use a multipart form client or the -F flag in curl rather than a JSON body.\n\nThe screenshot name must be unique within the project (case-insensitive). When name is omitted, it is derived from the uploaded filename. The account must have the Screenshots feature enabled; requests to projects on accounts without it return 403. Creating a screenshot requires a token with the write scope and manage access to the project.\n",
        "operationId": "screenshot/create",
        "tags": [
          "Screenshots"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/screenshot"
                },
                "example": {
                  "id": "abcd1234abcd1234abcd1234abcd1234",
                  "name": "home_screen",
                  "description": "Main landing page hero section",
                  "screenshot_url": "https://assets.phrase.com/screenshots/abcd1234abcd1234abcd1234abcd1234/screenshot.png",
                  "created_at": "2024-03-15T09:00:00Z",
                  "updated_at": "2024-03-15T09:00:00Z",
                  "markers_count": 0
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F branch=my-feature-branch \\\n  -F name=home_screen \\\n  -F description=\"Main landing page hero section\" \\\n  -F filename=@/path/to/home_screen.png"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshots create \\\n  --project_id <project_id> \\\n  --branch \"my-feature-branch\" \\\n  --name \"home_screen\" \\\n  --description \"Main landing page hero section\" \\\n  --filename \"/path/to/home_screen.png\" \\\n  --access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "title": "screenshot/create/parameters",
                "required": [
                  "filename"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Display name for the screenshot. Must be unique within the project (case-insensitive). When omitted, the name is derived from the uploaded filename.",
                    "type": "string",
                    "example": "home_screen"
                  },
                  "description": {
                    "description": "Optional free-text description of the screenshot.",
                    "type": "string",
                    "example": "Main landing page hero section"
                  },
                  "filename": {
                    "description": "Image file to upload. Accepted formats are JPEG (jpg/jpeg), GIF, and PNG. Maximum file size is 10 MB. Submitting an unsupported format or a file exceeding the size limit returns 422.",
                    "type": "string",
                    "format": "binary",
                    "x-accepted-formats": [
                      "jpg",
                      "jpeg",
                      "gif",
                      "png"
                    ],
                    "x-max-size-mb": 10
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/screenshots/{id}": {
      "get": {
        "summary": "Get a single screenshot",
        "description": "Returns a single screenshot belonging to the specified project. Use this to retrieve the screenshot's name, description, hosted image URL, and marker count after uploading, or before creating, updating, or inspecting its markers. The response is a synchronous, idempotent read — repeated calls return the same record without side effects.\n\nThe Attachable Screenshots feature must be enabled on the account.\n",
        "operationId": "screenshot/show",
        "tags": [
          "Screenshots"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/screenshot"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "CLI v2",
            "source": "phrase screenshots show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a screenshot",
        "description": "Update an existing screenshot.",
        "operationId": "screenshot/update",
        "tags": [
          "Screenshots"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/screenshot"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this screenshot, or when the account does not have the Attachable Screenshots feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/screenshots/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -F branch=my-feature-branch \\\n  -F name=A%20screenshot%20name \\\n  -F description=A%20screenshot%20description \\\n  -F filename=@/path/to/my/screenshot.png"
          },
          {
            "lang": "CLI v2",
            "source": "phrase screenshots update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\": \"A screenshot name\", \"description\": \"A screenshot description\", \"filename\":\"/path/to/my/screenshot.png\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "screenshot/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Name of the screenshot",
                    "type": "string",
                    "example": "A screenshot name"
                  },
                  "description": {
                    "description": "Description of the screenshot",
                    "type": "string",
                    "example": "A screenshot description"
                  },
                  "filename": {
                    "description": "Screenshot file",
                    "type": "string",
                    "format": "binary",
                    "example": "/path/to/my/screenshot.png"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a screenshot",
        "description": "Permanently removes a screenshot and all its associated markers from the project. Use this when you need to fully remove a screenshot that is no longer relevant — for example, after a UI redesign renders the captured screen obsolete. This is a hard delete: the screenshot record and every key-to-region marker linked to it are destroyed together and cannot be recovered.\n",
        "operationId": "screenshot/delete",
        "tags": [
          "Screenshots"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "CLI v2",
            "source": "phrase screenshots delete \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/search": {
      "post": {
        "summary": "Search across projects",
        "description": "Search for keys and translations in all account projects\n\n*Note: Search is limited to 10000 results and may not include recently updated data depending on the project sizes.*\n",
        "operationId": "search/in_account",
        "tags": [
          "Search"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "account_search_result",
                  "properties": {
                    "query": {
                      "type": "string"
                    },
                    "excerpt": {
                      "type": "string"
                    },
                    "key": {
                      "$ref": "#/components/schemas/key_preview"
                    },
                    "locale": {
                      "$ref": "#/components/schemas/locale_preview"
                    },
                    "project": {
                      "$ref": "#/components/schemas/project"
                    },
                    "translation": {
                      "$ref": "#/components/schemas/translation"
                    },
                    "other_translations": {
                      "type": "array",
                      "items": {
                        "$ref": "#/components/schemas/translation"
                      }
                    }
                  },
                  "example": {
                    "query": "keyword",
                    "excerpt": "excerpt text",
                    "key": {
                      "id": "abcd1234cdef1234abcd1234cdef1234",
                      "name": "key.name",
                      "plural": false,
                      "data_type": "string",
                      "tags": [
                        "tag 1",
                        "tag 2"
                      ]
                    },
                    "locale": {
                      "id": "abcd1234cdef1234abcd1234cdef1234",
                      "name": "German",
                      "code": "de_DE"
                    },
                    "project": {
                      "id": "abcd1234cdef1234abcd1234cdef1234",
                      "name": "project name",
                      "slug": "project-slug",
                      "main_format": "",
                      "project_image_url": "",
                      "created_at": "2021-05-04T14:16:26Z",
                      "updated_at": "2021-06-14T14:26:09Z",
                      "account": {
                        "id": "abcd1234cdef1234abcd1234cdef1234",
                        "name": "account name",
                        "slug": "account-slug",
                        "company": "company name",
                        "created_at": "2021-04-27T14:27:25Z",
                        "updated_at": "2021-06-14T14:35:15Z",
                        "company_logo_url": ""
                      },
                      "space": {
                        "id": "abcd1234cdef1234abcd1234cdef1234",
                        "name": "space name",
                        "slug": "space-slug",
                        "created_at": "2015-01-28T09:52:53Z",
                        "updated_at": "2015-01-28T09:52:53Z",
                        "projects_count": 1
                      }
                    },
                    "translation": {
                      "id": "abcd1234cdef1234abcd1234cdef1234",
                      "content": "some content",
                      "unverified": true,
                      "excluded": false,
                      "plural_suffix": "",
                      "key": {
                        "id": "abcd1234cdef1234abcd1234cdef1234",
                        "name": "key.name",
                        "plural": false,
                        "data_type": "string",
                        "tags": [
                          "tag 1",
                          "tag 2"
                        ]
                      },
                      "created_at": "2021-05-04T14:17:04Z",
                      "updated_at": "2021-05-04T14:17:04Z",
                      "placeholders": [],
                      "state": "translated",
                      "locale": {
                        "id": "abcd1234cdef1234abcd1234cdef1234",
                        "name": "German",
                        "code": "de_DE"
                      }
                    },
                    "other_translations": [
                      {
                        "id": "abcd1234cdef1234abcd1234cdef1234",
                        "content": "some content",
                        "unverified": true,
                        "excluded": false,
                        "plural_suffix": "",
                        "key": {
                          "id": "abcd1234cdef1234abcd1234cdef1234",
                          "name": "key.name",
                          "plural": false,
                          "data_type": "string",
                          "tags": [
                            "tag 1",
                            "tag 2"
                          ]
                        },
                        "created_at": "2021-05-04T14:17:04Z",
                        "updated_at": "2021-05-04T14:17:04Z",
                        "placeholders": [],
                        "state\"": "translated",
                        "locale": {
                          "id": "abcd1234cdef1234abcd1234cdef1234",
                          "name": "English",
                          "code": "en_EN"
                        }
                      }
                    ]
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read the account's translation keys."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/search\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F query=keyword \\\n  -F locale_code=localecode \\\n  -F page=1 \\\n  -F per_page=25 \\"
          },
          {
            "lang": "CLI v2",
            "source": "phrase search in_account \\\n--account_id <account_id> \\\n--data '{\"q\":\"keyword\",\"locale_code\": \"de\",\"page\": 1,\"per_page\": 25}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "search/in_account/parameters",
                "properties": {
                  "query": {
                    "description": "Search query",
                    "type": "string",
                    "example": "keyword"
                  },
                  "locale_code": {
                    "description": "Locale code",
                    "type": "string",
                    "example": "de_DE"
                  },
                  "page": {
                    "description": "Page",
                    "type": "integer",
                    "example": 1
                  },
                  "per_page": {
                    "description": "Number of results per page",
                    "type": "integer",
                    "example": 25
                  },
                  "project_ids": {
                    "description": "Limit the search to the given project codes. When omitted, the search spans every project the user can access in this account.\n",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234abcd1234abcd1234abcd1234"
                    ]
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/spaces": {
      "get": {
        "summary": "List Spaces",
        "description": "List all Spaces for the given account.",
        "operationId": "spaces/list",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "name": "q",
            "in": "query",
            "description": "Filter results by name. Supports the prefix-match syntax `name:<value>`, which returns only spaces whose names begin with `<value>`. Other query formats are ignored; omitting `q` returns all accessible spaces.\n",
            "required": false,
            "schema": {
              "type": "string",
              "example": "name:Engineering"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/space"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a Space",
        "description": "Create a new Space.",
        "operationId": "space/create",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/space"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"My Android Projects\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces create \\\n--account_id <account_id> \\\n--data '{\"name\": \"My Android Projects\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "space/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the space",
                    "type": "string",
                    "example": "My Android Projects"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/spaces/{id}": {
      "get": {
        "summary": "Get Space",
        "description": "Show the specified Space.",
        "operationId": "space/show",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/space"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update Space",
        "description": "Update the specified Space.",
        "operationId": "space/update",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/space"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"My Android Projects\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"name\": \"My Android Projects\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "space/update/parameters",
                "properties": {
                  "name": {
                    "description": "New name of the space",
                    "type": "string",
                    "example": "My Android Projects"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete Space",
        "description": "Delete the specified Space.",
        "operationId": "space/delete",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/spaces/{space_id}/projects": {
      "get": {
        "summary": "List Projects in Space",
        "description": "List all projects for the specified Space.",
        "operationId": "spaces/projects/list",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/space_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/project"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces/:space_id/projects\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces projects_list \\\n--account_id <account_id> \\\n--space_id <space_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Add Project to Space",
        "description": "Adds an existing project to the space.",
        "operationId": "spaces/projects/create",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/space_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces/:space_id/projects\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"id\":\"a4b3c2d1\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces projects_create \\\n--account_id <account_id> \\\n--space_id <space_id> \\\n--data '{\"id\":\"a4b3c2d1\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "spaces/projects/create/parameters",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "description": "Project ID to add or to the Space",
                    "type": "string",
                    "example": "a4b3c2d1"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/spaces/{space_id}/projects/{id}": {
      "delete": {
        "summary": "Remove Project from Space",
        "description": "Removes a specified project from the specified space.",
        "operationId": "spaces/projects/delete",
        "tags": [
          "Spaces"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/space_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/spaces/:space_id/projects/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase spaces projects_delete \\\n--account_id <account_id> \\\n--space_id <space_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/styleguides": {
      "get": {
        "summary": "List style guides",
        "description": "List all styleguides for the given project.",
        "operationId": "styleguides/list",
        "tags": [
          "Style guides"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/styleguide"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list style guides in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/styleguides\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase styleguides list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a style guide",
        "description": "Create a new style guide.",
        "operationId": "styleguide/create",
        "tags": [
          "Style guides"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/styleguide_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create style guides in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/styleguides\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"title\":\"Web application style guide\",\"audience\":\"customer-facing\",\"target_audience\":\"teenager\",\"grammatical_person\":\"first_person_singular\",\"vocabulary_type\":\"technical\",\"business\":\"We are a travel site that helps customers find the best hotels and flights.\",\"company_branding\":\"ACME Inc. should never be translated.\",\"formatting\":\"Never use capital letters\",\"glossary_terms\":\"Apartment, cabin, loft\",\"grammar_consistency\":\",\"literal_translation\":\"Neutral\",\"overall_tone\":\"Tone should be fun and light\",\"samples\":\"http://www.myexample.com/my/document/path/to/samples.pdf\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase styleguides create \\\n--project_id <project_id> \\\n--data '{\"title\": \"Web application style guide\", \"audience\":\"customer-facing\", \"target_audience\":\"teenager\", \"grammatical_person\":\"first_person_singular\", \"vocabulary_type\":\"technical\", \"business\": \"We are a travel site that helps customers find the best hotels and flights.\", \"company_branding\": \"ACME Inc. should never be translated.\", \"formatting\": \"Never use capital letters\", \"glossary_terms\": \"Apartment, cabin, loft\", \"grammar_consistency\":\", \"literal_translation\":\"Neutral\", \"overall_tone\": \"Tone should be fun and light\", \"samples\": \"http://www.myexample.com/my/document/path/to/samples.pdf\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "styleguide/create/parameters",
                "required": [
                  "title"
                ],
                "properties": {
                  "title": {
                    "description": "Style guide title",
                    "type": "string",
                    "example": "Web application style guide"
                  },
                  "audience": {
                    "description": "Audience description",
                    "type": "string",
                    "example": "customer-facing"
                  },
                  "target_audience": {
                    "description": "Target audience for the translations.",
                    "type": "string",
                    "enum": [
                      "not_specified",
                      "children",
                      "teenager",
                      "young_adults",
                      "adults",
                      "old_adults"
                    ],
                    "example": "teenager"
                  },
                  "grammatical_person": {
                    "description": "Preferred grammatical person.",
                    "type": "string",
                    "enum": [
                      "not_specified",
                      "first_person_singular",
                      "second_person_singular",
                      "third_person_singular_masculine",
                      "third_person_singular_feminine",
                      "third_person_singular_neuter",
                      "first_person_plural",
                      "second_person_plural",
                      "third_person_plural"
                    ],
                    "example": "first_person_singular"
                  },
                  "vocabulary_type": {
                    "description": "Vocabulary register the translations should use.",
                    "type": "string",
                    "enum": [
                      "not_specified",
                      "popular",
                      "technical",
                      "fictional"
                    ],
                    "example": "technical"
                  },
                  "business": {
                    "description": "Description of the business",
                    "type": "string",
                    "example": "We are a travel site that helps customers find the best hotels and flights."
                  },
                  "company_branding": {
                    "description": "Company branding to remain consistent.",
                    "type": "string",
                    "example": "ACME Inc. should never be translated."
                  },
                  "formatting": {
                    "description": "Formatting requirements and character limitations.",
                    "type": "string",
                    "example": "Never use capital letters"
                  },
                  "glossary_terms": {
                    "description": "List of terms and/or phrases that need to be translated consistently.",
                    "type": "string",
                    "example": "Apartment, cabin, loft"
                  },
                  "grammar_consistency": {
                    "description": "Formal or informal pronouns, consistent conjugation, grammatical gender",
                    "type": "string",
                    "example": ""
                  },
                  "literal_translation": {
                    "description": "Can be one of: Cultural/Conversational, Literal, Neutral.",
                    "type": "string",
                    "example": "Neutral"
                  },
                  "overall_tone": {
                    "description": "Tone requirement descriptions",
                    "type": "string",
                    "example": "Tone should be fun and light"
                  },
                  "samples": {
                    "description": "Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency.",
                    "type": "string",
                    "example": "http://www.myexample.com/my/document/path/to/samples.pdf"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/styleguides/{id}": {
      "get": {
        "summary": "Get a single style guide",
        "description": "Get details on a single style guide.",
        "operationId": "styleguide/show",
        "tags": [
          "Style guides"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/styleguide_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this style guide."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/styleguides/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase styleguides show \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a style guide",
        "description": "Update an existing style guide.",
        "operationId": "styleguide/update",
        "tags": [
          "Style guides"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/styleguide_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this style guide."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/styleguides/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"title\":\"Web application style guide\",\"audience\":\"customer-facing\",\"target_audience\":\"teenager\",\"grammatical_person\":\"first_person_singular\",\"vocabulary_type\":\"technical\",\"business\":\"We are a travel site that helps customers find the best hotels and flights.\",\"company_branding\":\"ACME Inc. should never be translated.\",\"formatting\":\"Never use capital letters\",\"glossary_terms\":\"Apartment, cabin, loft\",\"grammar_consistency\":\",\"literal_translation\":\"Neutral\",\"overall_tone\":\"Tone should be fun and light\",\"samples\":\"http://www.myexample.com/my/document/path/to/samples.pdf\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase styleguides update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"title\": \"Web application style guide\", \"audience\":\"customer-facing\", \"target_audience\":\"teenager\", \"grammatical_person\":\"first_person_singular\", \"vocabulary_type\":\"technical\", \"business\": \"We are a travel site that helps customers find the best hotels and flights.\", \"company_branding\": \"ACME Inc. should never be translated.\", \"formatting\": \"Never use capital letters\", \"glossary_terms\": \"Apartment, cabin, loft\", \"grammar_consistency\":\", \"literal_translation\":\"Neutral\", \"overall_tone\": \"Tone should be fun and light\", \"samples\": \"http://www.myexample.com/my/document/path/to/samples.pdf\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "styleguide/update/parameters",
                "properties": {
                  "title": {
                    "description": "Style guide title",
                    "type": "string",
                    "example": "Web application style guide"
                  },
                  "audience": {
                    "description": "Audience description",
                    "type": "string",
                    "example": "customer-facing"
                  },
                  "target_audience": {
                    "description": "Target audience for the translations.",
                    "type": "string",
                    "enum": [
                      "not_specified",
                      "children",
                      "teenager",
                      "young_adults",
                      "adults",
                      "old_adults"
                    ],
                    "example": "teenager"
                  },
                  "grammatical_person": {
                    "description": "Preferred grammatical person.",
                    "type": "string",
                    "enum": [
                      "not_specified",
                      "first_person_singular",
                      "second_person_singular",
                      "third_person_singular_masculine",
                      "third_person_singular_feminine",
                      "third_person_singular_neuter",
                      "first_person_plural",
                      "second_person_plural",
                      "third_person_plural"
                    ],
                    "example": "first_person_singular"
                  },
                  "vocabulary_type": {
                    "description": "Vocabulary register the translations should use.",
                    "type": "string",
                    "enum": [
                      "not_specified",
                      "popular",
                      "technical",
                      "fictional"
                    ],
                    "example": "technical"
                  },
                  "business": {
                    "description": "Description of the business",
                    "type": "string",
                    "example": "We are a travel site that helps customers find the best hotels and flights."
                  },
                  "company_branding": {
                    "description": "Company branding to remain consistent.",
                    "type": "string",
                    "example": "ACME Inc. should never be translated."
                  },
                  "formatting": {
                    "description": "Formatting requirements and character limitations.",
                    "type": "string",
                    "example": "Never use capital letters"
                  },
                  "glossary_terms": {
                    "description": "List of terms and/or phrases that need to be translated consistently.",
                    "type": "string",
                    "example": "Apartment, cabin, loft"
                  },
                  "grammar_consistency": {
                    "description": "Formal or informal pronouns, consistent conjugation, grammatical gender",
                    "type": "string",
                    "example": ""
                  },
                  "literal_translation": {
                    "description": "Can be one of: Cultural/Conversational, Literal, Neutral.",
                    "type": "string",
                    "example": "Neutral"
                  },
                  "overall_tone": {
                    "description": "Tone requirement descriptions",
                    "type": "string",
                    "example": "Tone should be fun and light"
                  },
                  "samples": {
                    "description": "Provide links to sample product pages, FAQ pages, etc. to give the translator a point of reference. You can also provide past translations. Even snippets or short paragraphs are helpful for maintaining consistency.",
                    "type": "string",
                    "example": "http://www.myexample.com/my/document/path/to/samples.pdf"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a style guide",
        "description": "Delete an existing style guide.",
        "operationId": "styleguide/delete",
        "tags": [
          "Style guides"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this style guide."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/styleguides/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase styleguides delete \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/languages": {
      "get": {
        "summary": "List supported languages",
        "description": "Returns all languages/locale codes that Phrase Strings recognizes, mapped to their\nhuman-readable display name. This endpoint does not require authentication.\n",
        "operationId": "languages/list",
        "tags": [
          "Supported Languages"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/languages"
                },
                "examples": {
                  "default": {
                    "value": {
                      "de": "German",
                      "en": "English",
                      "fr": "French"
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/languages\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          }
        ]
      }
    },
    "/projects/{project_id}/tags": {
      "get": {
        "summary": "List tags",
        "description": "List all tags for the given project.",
        "operationId": "tags/list",
        "tags": [
          "Tags"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "Excludes tags generated by the system, e.g. job, upload or figma tags. Mutually exclusive with `only_system_tags`.",
            "name": "exclude_system_tags",
            "example": true,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Returns only system-generated tags (e.g. job, upload, figma) and excludes user-defined tags. Mutually exclusive with `exclude_system_tags`.",
            "name": "only_system_tags",
            "example": false,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Specify a query to filter tags by name.",
            "example": "feature",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/tag"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list tags in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/tags?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase tags list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a tag",
        "description": "Create a new tag.",
        "operationId": "tag/create",
        "tags": [
          "Tags"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/tag_with_stats"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create tags in this project, or when the project is protected."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/tags\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"name\":\"my-feature\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase tags create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"name\":\"my-feature\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "tag/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "name": {
                    "description": "Name of the tag",
                    "type": "string",
                    "example": "my-feature"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/tags/{name}": {
      "get": {
        "summary": "Get a single tag",
        "description": "Get details and progress information on a single tag for a given project.",
        "operationId": "tag/show",
        "tags": [
          "Tags"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "description": "omit statistics in the response",
            "name": "omit_statistics",
            "example": true,
            "in": "query",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/tag_with_stats"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this tag."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/tags/:name?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase tags show \\\n--project_id <project_id> \\\n--name <name> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a tag",
        "description": "Delete an existing tag.",
        "operationId": "tag/delete",
        "tags": [
          "Tags"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this tag."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/tags/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase tags delete \\\n--project_id <project_id> \\\n--name <name> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams": {
      "get": {
        "summary": "List Teams",
        "description": "List all Teams for the given account.",
        "operationId": "teams/list",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/team"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams list \\\n--account_id <account_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a Team",
        "description": "Create a new Team.",
        "operationId": "team/create",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/team_detail"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"German Translators\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams create \\\n--account_id <account_id> \\\n--data '{\"name\": \"German Translators\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "team/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the team",
                    "type": "string",
                    "example": "German Translators"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{id}": {
      "get": {
        "summary": "Get Team",
        "description": "Show the specified Team.",
        "operationId": "team/show",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/team_detail"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams show \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update Team",
        "description": "Update the specified Team.",
        "operationId": "team/update",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/team_detail"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"German Translators\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams update \\\n--account_id <account_id> \\\n--id <id> \\\n--data '{\"name\": \"German Translators\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "team/update/parameters",
                "properties": {
                  "name": {
                    "description": "New name of the team",
                    "type": "string",
                    "example": "German Translators"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete Team",
        "description": "Delete the specified Team.",
        "operationId": "team/delete",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams delete \\\n--account_id <account_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{team_id}/projects": {
      "post": {
        "summary": "Add Project to Team",
        "description": "Adds an existing project to the team.",
        "operationId": "teams/projects/create",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/team_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:team_id/projects\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"id\":\"a4b3c2d1\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams projects_create \\\n--account_id <account_id> \\\n--team_id <team_id> \\\n--data '{\"id\":\"a4b3c2d1\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "teams/projects/create/parameters",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "description": "Project ID to add to the Team",
                    "type": "string",
                    "example": "a4b3c2d1"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{team_id}/projects/{id}": {
      "delete": {
        "summary": "Remove Project from Team",
        "description": "Removes a specified project from the specified team.",
        "operationId": "teams/projects/delete",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/team_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:team_id/projects/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams projects_delete \\\n--account_id <account_id> \\\n--team_id <team_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{team_id}/spaces": {
      "post": {
        "summary": "Add Space",
        "description": "Adds an existing space to the team.",
        "operationId": "teams/spaces/create",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/team_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:team_id/spaces\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"id\":\"a4b3c2d1\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams spaces_create \\\n--account_id <account_id> \\\n--team_id <team_id> \\\n--data '{\"id\":\"a4b3c2d1\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "teams/spaces/create/parameters",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "description": "Space ID to add to the Team",
                    "type": "string",
                    "example": "a4b3c2d1"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{team_id}/spaces/{id}": {
      "delete": {
        "summary": "Remove Space",
        "description": "Removes a specified space from the specified team.",
        "operationId": "teams/spaces/delete",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/team_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:team_id/spaces/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams spaces_delete \\\n--account_id <account_id> \\\n--team_id <team_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{team_id}/users": {
      "post": {
        "summary": "Add User",
        "description": "Adds an existing user to the team.",
        "operationId": "teams/users/create",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/team_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:team_id/users\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"id\":\"a4b3c2d1\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams users_create \\\n--account_id <account_id> \\\n--team_id <team_id> \\\n--data '{\"id\":\"a4b3c2d1\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "teams/users/create/parameters",
                "required": [
                  "id"
                ],
                "properties": {
                  "id": {
                    "description": "User ID to add to the Team",
                    "type": "string",
                    "example": "a4b3c2d1"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/accounts/{account_id}/teams/{team_id}/users/{id}": {
      "delete": {
        "summary": "Remove User",
        "description": "Removes a specified user from the specified team.",
        "operationId": "teams/users/delete",
        "tags": [
          "Teams"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/account_id"
          },
          {
            "$ref": "#/components/parameters/team_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/accounts/:account_id/teams/:team_id/users/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase teams users_delete \\\n--account_id <account_id> \\\n--team_id <team_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations": {
      "get": {
        "summary": "List all translations",
        "description": "List translations for the given project. If you want to download all translations for one locale we recommend to use the `locales#download` endpoint.\n",
        "operationId": "translations/list",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/If-Modified-Since"
          },
          {
            "$ref": "#/components/parameters/If-None-Match"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter translations to those attached to the key identified by this code. Equivalent to calling `GET /projects/{project_id}/keys/{key_id}/translations`.",
            "name": "key_id",
            "in": "query",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Filter translations to those for the given locale (locale code or id). Equivalent to calling `GET /projects/{project_id}/locales/{locale_id}/translations`.",
            "name": "locale_id",
            "in": "query",
            "example": "abcd1234cdef1234abcd1234cdef1234",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
            "example": "updated_at",
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "example": "desc",
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n* `reviewed_after:2013-02-21T00:00:00Z` for fetching translations that were reviewed after the given timestamp\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
            "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read translations in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations?branch=my-feature-branch&sort=updated_at&order=desc&q=PhraseApp*%2520unverified:true%2520excluded:true%2520tags:feature,center\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--sort updated_at \\\n--order desc \\\n--query 'PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.6.4"
      },
      "post": {
        "summary": "Create a translation",
        "description": "Create a translation.",
        "operationId": "translation/create",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to translate this locale, or (when `unverified` is `true`) when the account does not have the Verification System or Advanced Workflows feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"key_id\":\"abcd1234cdef1234abcd1234cdef1234\",\"content\":\"My translation\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations create \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"locale_id\":\"abcd1234cdef1234abcd1234cdef1234\", \"key_id\":\"abcd1234cdef1234abcd1234cdef1234\", \"content\": \"My translation\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/create/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_id": {
                    "description": "Locale. Can be the name or id of the locale. Preferred is id",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "key_id": {
                    "description": "Key",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "content": {
                    "description": "Translation content",
                    "type": "string",
                    "example": "My translation"
                  },
                  "plural_suffix": {
                    "description": "Plural suffix. Can be one of: zero, one, two, few, many, other. Must be specified if the key associated to the translation is pluralized.",
                    "type": "string",
                    "example": null
                  },
                  "unverified": {
                    "description": "Indicates whether translation is unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "excluded": {
                    "description": "Indicates whether translation is excluded.",
                    "type": "boolean",
                    "example": null
                  },
                  "autotranslate": {
                    "description": "Indicates whether the translation should be auto-translated. Responses with status 422 if provided for translation within a non-default locale or the project does not have the Autopilot feature enabled.",
                    "type": "boolean",
                    "example": null
                  },
                  "minor_change": {
                    "description": "When `true`, the translation is marked as a minor edit and does not trigger downstream re-verification on the linked locales' translations.\n",
                    "type": "boolean",
                    "example": false
                  },
                  "reviewed": {
                    "description": "When `true` and the project's review workflow is enabled, the translation is created in the `reviewed` state.\n",
                    "type": "boolean",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/locales/{locale_id}/translations": {
      "get": {
        "summary": "List translations by locale",
        "description": "List translations for a specific locale. If you want to download all translations for one locale we recommend to use the `locales#download` endpoint.\n",
        "operationId": "translations/by_locale",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/locale_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
            "example": "updated_at",
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "example": "desc",
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n- `id:translation_id,...` for queries on a comma-separated list of ids\n- `unverified:{true|false}` for verification status\n- `tags:XYZ` for tags on the translation\n- `excluded:{true|false}` for exclusion status\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
            "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read translations in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/locales/:locale_id/translations?branch=my-feature-branch&sort=updated_at&order=desc&q=PhraseApp*%2520unverified:true%2520excluded:true%2520tags:feature,center\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations by_locale \\\n--project_id <project_id> \\\n--locale_id <locale_id> \\\n--branch my-feature-branch \\\n--sort updated_at \\\n--order desc \\\n--query 'PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/keys/{key_id}/translations": {
      "get": {
        "summary": "List translations by key",
        "description": "List translations for a specific key.",
        "operationId": "translations/by_key",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/key_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
            "example": "updated_at",
            "name": "sort",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Order direction. Can be one of: asc, desc.",
            "example": "desc",
            "name": "order",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Specify a query to find translations by content (including wildcards).\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `unverified:{true|false}` for verification status\n* `tags:XYZ` for tags on the translation\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
            "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center",
            "name": "q",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read translations for this key."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/keys/:key_id/translations?branch=my-feature-branch&sort=updated_at&order=desc&q=PhraseApp*%2520unverified:true%2520excluded:true%2520tags:feature,center\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations by_key \\\n--project_id <project_id> \\\n--key_id <key_id> \\\n--branch my-feature-branch \\\n--sort updated_at \\\n--order desc \\\n--query 'PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center' \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/search": {
      "post": {
        "summary": "Search translations",
        "description": "Search translations for the given project. Provides the same search interface as `translations#index` but allows POST requests to avoid limitations imposed by GET requests. If you want to download all translations for one locale we recommend to use the `locales#download` endpoint.",
        "operationId": "translations/search",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read translations in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/search\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"branch\":\"my-feature-branch\",\"sort\":\"updated_at\",\"order\":\"desc\",\"q\":\"PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations search \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"sort\":\"updated_at\", \"order\":\"desc\", \"q\":\"'PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center'\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/search/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "sort": {
                    "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
                    "type": "string",
                    "example": "updated_at"
                  },
                  "order": {
                    "description": "Order direction. Can be one of: asc, desc.",
                    "type": "string",
                    "example": "desc"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n- `id:translation_id,...` for queries on a comma-separated list of ids\n- `tags:XYZ` for tags on the translation\n- `unverified:{true|false}` for verification status\n- `excluded:{true|false}` for exclusion status\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%20unverified:true%20excluded:true%20tags:feature,center"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{id}": {
      "get": {
        "summary": "Get a single translation",
        "description": "Get details on a single translation.",
        "operationId": "translation/show",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this translation."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a translation",
        "description": "Update an existing translation.",
        "operationId": "translation/update",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this translation, or (when `unverified` is `true`) when the account does not have the Verification System or Advanced Workflows feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"content\":\"My translation\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\", \"content\": \"My translation\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/update/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "content": {
                    "description": "Translation content",
                    "type": "string",
                    "example": "My translation"
                  },
                  "plural_suffix": {
                    "description": "Plural suffix. Can be one of: zero, one, two, few, many, other. Must be specified if the key associated to the translation is pluralized.",
                    "type": "string",
                    "example": null
                  },
                  "unverified": {
                    "description": "Indicates whether translation is unverified. Part of the [Advanced Workflows](https://support.phrase.com/hc/en-us/articles/5784094755484) feature.",
                    "type": "boolean",
                    "example": null
                  },
                  "excluded": {
                    "description": "Indicates whether translation is excluded.",
                    "type": "boolean",
                    "example": null
                  },
                  "autotranslate": {
                    "description": "Indicates whether the translation should be auto-translated. Responses with status 422 if provided for translation within a non-default locale or the project does not have the Autopilot feature enabled.",
                    "type": "boolean",
                    "example": null
                  },
                  "reviewed": {
                    "description": "When set to `true`, the translation will be marked as reviewed.",
                    "type": "boolean",
                    "example": true
                  },
                  "minor_change": {
                    "description": "When `true`, the update is treated as a minor edit and does not trigger downstream re-verification on the linked locales' translations.\n",
                    "type": "boolean",
                    "example": false
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{id}/verify": {
      "patch": {
        "summary": "Verify a translation",
        "description": "Verify an existing translation.",
        "operationId": "translation/verify",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to verify this translation, or when the account does not have the Verification System or Advanced Workflows feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/verify\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations verify \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/verify/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{id}/unverify": {
      "patch": {
        "summary": "Mark a translation as unverified",
        "description": "Mark an existing translation as unverified.",
        "operationId": "translation/unverify",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to unverify this translation, or when the account does not have the Verification System or Advanced Workflows feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/unverify\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations unverify \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/unverify/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{id}/review": {
      "patch": {
        "summary": "Review a translation",
        "description": "Mark an existing translation as reviewed.",
        "operationId": "translation/review",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to review this translation, or when the account does not have the Workflow feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/review\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations review \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/review/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{id}/unreview": {
      "patch": {
        "summary": "Unreview a translation",
        "description": "Mark a reviewed translation as translated.",
        "operationId": "translation/unreview",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to unreview this translation, or when the account does not have the Workflow feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/unreview\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations unreview \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/unreview/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.41"
      }
    },
    "/projects/{project_id}/translations/{id}/exclude": {
      "patch": {
        "summary": "Exclude a translation from export",
        "description": "Set exclude from export flag on an existing translation.",
        "operationId": "translation/exclude",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to exclude this translation from export."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/exclude\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations exclude \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/exclude/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{id}/include": {
      "patch": {
        "summary": "Include a translation",
        "description": "Remove exclude from export flag from an existing translation.",
        "operationId": "translation/include",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_details"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to include this translation in export."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:id/include\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations include \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"branch\":\"my-feature-branch\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translation/include/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/verify": {
      "patch": {
        "summary": "Verify translations by query",
        "description": "Verify translations matching query.",
        "operationId": "translations/verify-collection",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_count"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the account does not have the Batch Actions feature, when the account does not have the Verification System or Advanced Workflows feature, or when the requesting user is not allowed to verify the matched translations."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/verify\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"PhraseApp*%20unverified:true%20tags:feature,center\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations verify-collection \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'PhraseApp*%20unverified:true%20tags:feature,center'\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/verify/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "locale_id": {
                    "description": "specify the locale of the translations to be verified",
                    "type": "string",
                    "example": "fc2f11dd6a658fa9652f6f0a9ebee688"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%20unverified:true%20tags:feature,center"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/unverify": {
      "patch": {
        "summary": "Unverify translations by query",
        "description": "Mark translations matching query as unverified.",
        "operationId": "translations/unverify-collection",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_count"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the account does not have the Batch Actions feature, when the account does not have the Verification System or Advanced Workflows feature, or when the requesting user is not allowed to unverify the matched translations."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/unverify\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"PhraseApp*%20verified:true%20tags:feature,center\",\"sort\":\"updated_at\",\"order\":\"desc\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations unverify-collection \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'PhraseApp*%20verified:true%20tags:feature,center'\", \"sort\":\"updated_at\", \"order\":\"desc\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/unverify/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%20verified:true%20tags:feature,center"
                  },
                  "sort": {
                    "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
                    "type": "string",
                    "example": "updated_at"
                  },
                  "order": {
                    "description": "Order direction. Can be one of: asc, desc.",
                    "type": "string",
                    "example": "desc"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/review": {
      "patch": {
        "summary": "Review translations selected by query",
        "description": "Review translations matching query.",
        "operationId": "translations/review-collection",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_count"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the account does not have the Batch Actions feature, when the account does not have the Workflow feature, or when the requesting user is not allowed to review the matched translations."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/review\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"PhraseApp*%reviewed:false%20tags:feature,center\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations review-collection \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'PhraseApp*%reviewed:false%20tags:feature,center'\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/review/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%reviewed:false%20tags:feature,center"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/unreview": {
      "patch": {
        "summary": "Unreview translations selected by query",
        "description": "Unreview translations matching query.",
        "operationId": "translations/unreview-collection",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_count"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the account does not have the Batch Actions feature, when the account does not have the Workflow feature, or when the requesting user is not allowed to unreview the matched translations."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/unreview\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"PhraseApp*%reviewed:false%20tags:feature,center\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations unreview-collection \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'PhraseApp*%reviewed:false%20tags:feature,center'\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/unreview/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%reviewed:true%20tags:feature,center"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.41"
      }
    },
    "/projects/{project_id}/translations/exclude": {
      "patch": {
        "summary": "Exclude translations by query",
        "description": "Exclude translations matching query from locale export.",
        "operationId": "translations/exclude-collection",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_count"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the account does not have the Batch Actions feature, or when the requesting user is not allowed to exclude translations from export in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/exclude\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"PhraseApp*%20verified:true%20tags:feature,center\",\"sort\":\"updated_at\",\"order\":\"desc\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations exclude-collection \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'PhraseApp*%20verified:true%20tags:feature,center'\", \"sort\":\"updated_at\", \"order\":\"desc\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/exclude/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n\n* `id:translation_id,...` for queries on a comma-separated list of ids\n* `tags:XYZ` for tags on the translation\n* `unverified:{true|false}` for verification status\n* `excluded:{true|false}` for exclusion status\n* `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%20verified:true%20tags:feature,center"
                  },
                  "sort": {
                    "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
                    "type": "string",
                    "example": "updated_at"
                  },
                  "order": {
                    "description": "Order direction. Can be one of: asc, desc.",
                    "type": "string",
                    "example": "desc"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/include": {
      "patch": {
        "summary": "Include translations by query",
        "description": "Include translations matching query in locale export.",
        "operationId": "translations/include-collection",
        "tags": [
          "Translations"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/affected_count"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the account does not have the Batch Actions feature, or when the requesting user is not allowed to include translations in export in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/include\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"branch\":\"my-feature-branch\",\"q\":\"PhraseApp*%20verified:true%20tags:feature,center\",\"sort\":\"updated_at\",\"order\":\"desc\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase translations include-collection \\\n--project_id <project_id> \\\n--data '{\"branch\":\"my-feature-branch\", \"q\":\"'PhraseApp*%20verified:true%20tags:feature,center'\", \"sort\":\"updated_at\", \"order\":\"desc\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "translations/include/parameters",
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "q": {
                    "description": "Specify a query to find translations by content (including wildcards).\n\n*Note: Search is limited to 10000 results and may not include recently updated data (depending on the project size).*\n\nThe following qualifiers are supported in the query:\n- `id:translation_id,...` for queries on a comma-separated list of ids\n- `tags:XYZ` for tags on the translation\n- `unverified:{true|false}` for verification status\n- `excluded:{true|false}` for exclusion status\n- `updated_at:{>=|<=}2013-02-21T00:00:00Z` for date range queries\n\nFind more examples [here](/en/api/strings/usage-examples).\n",
                    "type": "string",
                    "example": "PhraseApp*%20verified:true%20tags:feature,center"
                  },
                  "sort": {
                    "description": "Sort criteria. Can be one of: key_name, created_at, updated_at.",
                    "type": "string",
                    "example": "updated_at"
                  },
                  "order": {
                    "description": "Order direction. Can be one of: asc, desc.",
                    "type": "string",
                    "example": "desc"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/upload_batches": {
      "post": {
        "summary": "Create upload batch",
        "description": "Groups multiple file uploads into a single batch. Optionally, launches the deletion of unmentioned translation keys\nafter all uploads in the batch are completed.\n",
        "operationId": "upload_batches/create",
        "tags": [
          "Upload Batches"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "upload_batches/create/parameters",
                "required": [
                  "upload_ids"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "delete_unmentioned_keys": {
                    "description": "If set to true, after all uploads in the batch are completed, translation keys that were not mentioned in any of the uploaded files will be deleted.",
                    "type": "boolean",
                    "example": true
                  },
                  "upload_ids": {
                    "description": "Array of upload IDs to include in the batch",
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "example": [
                      "abcd1234cdef1234abcd1234cdef1234",
                      "bcde2345defg2345bcde2345defg2345"
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "title": "upload_batch",
                  "properties": {
                    "status": {
                      "type": "string",
                      "description": "Processing state of the upload batch",
                      "enum": [
                        "started",
                        "done"
                      ]
                    },
                    "delete_unmentioned_keys": {
                      "type": "boolean",
                      "description": "Indicates whether unmentioned keys will be deleted after processing all uploads in the batch"
                    },
                    "uploads_count": {
                      "type": "integer",
                      "description": "Number of uploads attached to this batch."
                    },
                    "created_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "updated_at": {
                      "type": "string",
                      "format": "date-time"
                    },
                    "project": {
                      "type": "object",
                      "$ref": "#/components/schemas/project_short"
                    },
                    "user": {
                      "type": "object",
                      "$ref": "#/components/schemas/user_preview"
                    },
                    "uploads": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "$ref": "#/components/schemas/upload"
                      }
                    }
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create uploads in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/upload_batches\" \\\n-X POST \\\n-H \"Content-Type: application/json\" \\\n-d '{\n  \"branch\": \"my-feature-branch\",\n  \"delete_unmentioned_keys\": true,\n  \"upload_ids\": [\n    \"abcd1234cdef1234abcd1234cdef1234\",\n    \"bcde2345defg2345bcde2345defg2345\"\n  ]\n}' \\\n-u <token>:"
          },
          {
            "lang": "CLI v2",
            "source": "phrase upload_batches create --project-id :project_id \\\n--data '{\n  \"branch\": \"my-feature-branch\",\n  \"delete_unmentioned_keys\": true,\n  \"upload_ids\": [\n    \"abcd1234cdef1234abcd1234cdef1234\",\n    \"bcde2345defg2345bcde2345defg2345\"\n  ]\n}' \\\n--access_token <token>"
          }
        ]
      }
    },
    "/projects/{project_id}/uploads": {
      "post": {
        "summary": "Upload a new file",
        "description": "Upload a new language file. Creates necessary resources in your project.\n\nThe upload is processed asynchronously: this endpoint returns `201 Created` once the file has been accepted and enqueued, not once processing has finished. Poll `GET /projects/{project_id}/uploads/{id}` and check the `state` field — `error` means processing failed (for example, an unparseable file or a `file_format` that doesn't match the file's actual content).\n\nNote: be aware of [upload limits](https://support.phrase.com/hc/en-us/articles/8548271212188-Phrase-Strings-Limits#file-size-upload-limits-0-0).\n",
        "operationId": "upload/create",
        "tags": [
          "Uploads"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/upload"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create uploads in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/uploads\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -F branch=my-feature-branch \\\n  -F file=@/path/to/my/file.json \\\n  -F locale_id=abcd1234cdef1234abcd1234cdef1234 \\\n  -F tags=awesome-feature,needs-proofreading \\\n  -F locale_mapping[en]=2 \\\n  -F format_options[foo]=bar"
          },
          {
            "lang": "CLI v2",
            "source": "phrase uploads create \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--file /path/to/my/file.json \\\n--locale_id abcd1234cdef1234abcd1234cdef1234 \\\n--tags awesome-feature,needs-proofreading \\\n--locale_mapping '{\"en\": \"2\"}' \\\n--format_options '{\"foo\": \"bar\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "title": "upload/create/parameters",
                "required": [
                  "file",
                  "file_format",
                  "locale_id"
                ],
                "properties": {
                  "branch": {
                    "description": "specify the branch to use",
                    "type": "string",
                    "example": "my-feature-branch"
                  },
                  "file": {
                    "description": "File to be imported",
                    "type": "string",
                    "format": "binary",
                    "example": "/path/to/my/file.json"
                  },
                  "file_format": {
                    "description": "File format of the uploaded file, given as a format's `api_name`. See our [Formats API Endpoint](/en/api/strings/formats/list-formats) for the full list of supported formats.\n\nOptional. When omitted, Phrase tries to auto-detect the format from the file's content. This is not always possible for JSON files, since several JSON-based formats (e.g. `json`, `simple_json`, `nested_json`) share the same structure.\n",
                    "type": "string",
                    "example": "json"
                  },
                  "locale_id": {
                    "description": "Locale of the file's content. Can be the name or id of the locale. Preferred is id.",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "tags": {
                    "description": "List of tags separated by comma to be associated with the new keys contained in the upload.",
                    "type": "string",
                    "example": "awesome-feature,needs-proofreading"
                  },
                  "update_translations": {
                    "description": "Indicates whether existing translations should be updated with the file content.",
                    "type": "boolean",
                    "example": true
                  },
                  "update_custom_metadata": {
                    "description": "Determines whether to update custom metadata values when uploading a file. If set to true, existing metadata can be changed or removed. Passing an empty value deletes the corresponding metadata property.",
                    "type": "boolean",
                    "default": true,
                    "example": true
                  },
                  "update_translation_keys": {
                    "description": "Pass `false` here to prevent new keys from being created and existing keys updated.",
                    "type": "boolean",
                    "default": true,
                    "example": true
                  },
                  "update_translations_on_source_match": {
                    "description": "Update target translations only if the source translations of the uploaded multilingual file match the stored translations.",
                    "type": "boolean",
                    "default": false,
                    "example": true
                  },
                  "source_locale_id": {
                    "description": "Specifies the source locale for multilingual files. Can be the name or id of the locale. Preferred is id.",
                    "type": "string",
                    "example": "abcd1234cdef1234abcd1234cdef1234"
                  },
                  "update_descriptions": {
                    "description": "Existing key descriptions will be updated with the file content. Empty descriptions overwrite existing descriptions.",
                    "type": "boolean",
                    "example": true
                  },
                  "convert_emoji": {
                    "description": "This option is obsolete. Providing the option will cause a bad request error.",
                    "type": "boolean",
                    "example": true,
                    "deprecated": true
                  },
                  "skip_upload_tags": {
                    "description": "Indicates whether the upload should not create upload tags.",
                    "type": "boolean",
                    "example": true
                  },
                  "skip_unverification": {
                    "description": "Indicates whether the upload should unverify updated translations.",
                    "type": "boolean",
                    "example": true
                  },
                  "file_encoding": {
                    "description": "Enforces a specific encoding on the file contents. Valid options are \"UTF-8\", \"UTF-16\" and \"ISO-8859-1\".",
                    "type": "string",
                    "example": "UTF-8"
                  },
                  "locale_mapping": {
                    "description": "Mapping between locale names and translation columns. Required in some formats like CSV or XLSX.",
                    "type": "object",
                    "properties": {},
                    "example": "{\"en\": \"2\"}"
                  },
                  "format_options": {
                    "description": "Additional options available for specific formats. See our format guide for the [complete list](https://support.phrase.com/hc/en-us/articles/9652464547740-List-of-Supported-File-Types-Strings).",
                    "type": "object",
                    "properties": {},
                    "example": "{\"foo\": \"bar\"}"
                  },
                  "autotranslate": {
                    "description": "If set, translations for the uploaded language will be fetched automatically.",
                    "type": "boolean",
                    "example": true
                  },
                  "verify_mentioned_translations": {
                    "description": "Indicates whether all translations mentioned in the upload should be verified.",
                    "type": "boolean",
                    "default": false,
                    "example": true
                  },
                  "mark_reviewed": {
                    "description": "Indicated whether the imported translations should be marked as reviewed. This setting is available if the review workflow is enabled for the project.",
                    "type": "boolean",
                    "example": true
                  },
                  "tag_only_affected_keys": {
                    "description": "Indicates whether only keys affected (created or updated) by the upload should be tagged. The default is `false`",
                    "type": "boolean",
                    "default": false,
                    "example": true
                  },
                  "translation_key_prefix": {
                    "description": "This prefix will be added to all uploaded translation key names to prevent collisions. Use a meaningful prefix related to your project or file to keep key names organized.",
                    "type": "string",
                    "example": "prefix_"
                  },
                  "skip_automated_job_creation": {
                    "description": "When `true`, the automation rules for the project will not fire for this upload, so no jobs are created as a side effect of importing this file. Defaults to `false`.\n",
                    "type": "boolean",
                    "default": false,
                    "example": false
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.12"
      },
      "get": {
        "summary": "List uploads",
        "description": "List all uploads for the given project.",
        "operationId": "uploads/list",
        "tags": [
          "Uploads"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/upload"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list uploads in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/uploads?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase uploads list \\\n--project_id <project_id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/uploads/{id}": {
      "get": {
        "summary": "Get a single upload",
        "description": "View details and summary for a single upload. Use this endpoint to poll for the outcome of an upload created via `POST /projects/{project_id}/uploads` — check the `state` field.\n",
        "operationId": "upload/show",
        "tags": [
          "Uploads"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/upload"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this upload."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/uploads/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase uploads show \\\n--project_id <project_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/user": {
      "get": {
        "summary": "Show current User",
        "description": "Show details for current User.",
        "operationId": "show/user",
        "tags": [
          "Users"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/current_user"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/user\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase shows user \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/variables": {
      "get": {
        "summary": "List variables",
        "description": "List all variables for the current project.",
        "operationId": "variables/list",
        "tags": [
          "Variables"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/variable"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to list variables in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/variables\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase variables list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a variable",
        "description": "Create a new variable.",
        "operationId": "variable/create",
        "tags": [
          "Variables"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/variable"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to create variables in this project."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/variables\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"name\":\"MY_VARIABLE\",\"value\":\"Hello World\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase variables create \\\n--project_id <project_id> \\\n--data '{\"name\":\"MY_VARIABLE\", \"value\":\"Hello World\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "variable/create/parameters",
                "required": [
                  "name"
                ],
                "properties": {
                  "name": {
                    "description": "Name of the variable",
                    "type": "string",
                    "example": "MY_VARIABLE"
                  },
                  "value": {
                    "description": "Value of the variable",
                    "type": "string",
                    "example": "Hello World"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/variables/{name}": {
      "get": {
        "summary": "Get a single variable",
        "description": "Get details on a single variable for a given project.",
        "operationId": "variable/show",
        "tags": [
          "Variables"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/variable"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope or when the requesting user is not allowed to read this variable."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/variables/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase variables show \\\n--project_id <project_id> \\\n--name <name> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a variable",
        "description": "Update an existing variable.",
        "operationId": "variable/update",
        "tags": [
          "Variables"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/variable"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to update this variable."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/variables/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"name\":\"MY_VARIABLE\",\"value\":\"Hello World\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase variables update \\\n--project_id <project_id> \\\n--name <name> \\\n--data '{\"name\":\"MY_VARIABLE\",\"value\":\"Hello World\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "variable/update/parameters",
                "properties": {
                  "name": {
                    "description": "Name of the variable",
                    "type": "string",
                    "example": "MY_VARIABLE"
                  },
                  "value": {
                    "description": "Value of the variable",
                    "type": "string",
                    "example": "Hello World"
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a variable",
        "description": "Delete an existing variable.",
        "operationId": "variable/delete",
        "tags": [
          "Variables"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/name"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope or when the requesting user is not allowed to delete this variable."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/variables/:name\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase variables delete \\\n--project_id <project_id> \\\n--name <name> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{translation_id}/versions": {
      "get": {
        "summary": "List all versions",
        "description": "List all changes done to a given translation.",
        "operationId": "versions/list",
        "tags": [
          "Versions / History"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/translation_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Indicates whether only content updates should be returned",
            "example": true,
            "name": "only_content_updates",
            "in": "query",
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/translation_version_with_user"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list translation versions, or when the account does not have the History feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:translation_id/versions?branch=my-feature-branch&only_content_updates=true\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase versions list \\\n--project_id <project_id> \\\n--translation_id <translation_id> \\\n--branch my-feature-branch \\\n--only_content_updates true \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/translations/{translation_id}/versions/{id}": {
      "get": {
        "summary": "Get a single version",
        "description": "Get details on a single version.",
        "operationId": "version/show",
        "tags": [
          "Versions / History"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/translation_id"
          },
          {
            "$ref": "#/components/parameters/id"
          },
          {
            "description": "specify the branch to use",
            "example": "my-feature-branch",
            "name": "branch",
            "in": "query",
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/translation_version_with_user"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this translation version, or when the account does not have the History feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/translations/:translation_id/versions/:id?branch=my-feature-branch\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase versions show \\\n--project_id <project_id> \\\n--translation_id <translation_id> \\\n--id <id> \\\n--branch my-feature-branch \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/webhooks/{webhook_id}/deliveries": {
      "get": {
        "summary": "List webhook deliveries",
        "description": "List all webhook deliveries for the given webhook_id.",
        "operationId": "webhook_deliveries/list",
        "tags": [
          "Webhook Deliveries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/webhook_id"
          },
          {
            "$ref": "#/components/parameters/response_status_codes"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/webhook_delivery"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:webhook_id/deliveries?response_status_codes=401%2C404\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks list \\\n--project_id <project_id> \\\n--webhook_id <webhook_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/webhooks/{webhook_id}/deliveries/{id}": {
      "get": {
        "summary": "Get a single webhook delivery",
        "description": "Get all information about a single webhook delivery for the given ID.",
        "operationId": "webhook_deliveries/show",
        "tags": [
          "Webhook Deliveries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/webhook_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook_delivery"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:webhook_id/deliveries/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhook deliveries show \\\n--project_id <project_id> \\\n--webhook_id <webhook_id> \\\n--id <delivery_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/webhooks/{webhook_id}/deliveries/{id}/redeliver": {
      "post": {
        "summary": "Redeliver a single webhook delivery",
        "description": "Trigger an individual webhook delivery to be redelivered.",
        "operationId": "webhook_deliveries/redeliver",
        "tags": [
          "Webhook Deliveries"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/webhook_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook_delivery"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:webhook_id/deliveries/:id/redeliver\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhook deliveries show \\\n--project_id <project_id> \\\n--webhook_id <webhook_id> \\\n--id <delivery_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/webhooks": {
      "get": {
        "summary": "List webhooks",
        "description": "List all webhooks for the given project.",
        "operationId": "webhooks/list",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/page"
          },
          {
            "$ref": "#/components/parameters/per_page"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/webhook"
                  }
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              },
              "Link": {
                "$ref": "#/components/headers/Link"
              },
              "Pagination": {
                "$ref": "#/components/headers/Pagination"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to list webhooks in this project, or when the account does not have the Webhooks feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks list \\\n--project_id <project_id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "post": {
        "summary": "Create a webhook",
        "description": "Create a new webhook.",
        "operationId": "webhook/create",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          }
        ],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to create webhooks in this project, or when the account does not have the Webhooks feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST \\\n  -d '{\"callback_url\":\"http://example.com/hooks/phraseapp-notifications\",\"description\":\"My webhook for chat notifications\",\"events\":\"locales:create,translations:update\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks create \\\n--project_id <project_id> \\\n--data '{\"callback_url\": \"http://example.com/hooks/phraseapp-notifications\", \"description\": \"My webhook for chat notifications\", \"events\": \"locales:create,translations:update\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "webhook/create/parameters",
                "required": [
                  "callback_url"
                ],
                "properties": {
                  "callback_url": {
                    "description": "Callback URL to send requests to",
                    "type": "string",
                    "example": "http://example.com/hooks/phraseapp-notifications"
                  },
                  "secret": {
                    "description": "Webhook secret used to calculate signature. If empty, the default project secret will be used.",
                    "type": "string",
                    "example": "secr3t"
                  },
                  "description": {
                    "description": "Webhook description",
                    "type": "string",
                    "example": "My webhook for chat notifications"
                  },
                  "events": {
                    "description": "List of event names to trigger the webhook (separated by comma)",
                    "type": "string",
                    "example": "locales:create,translations:update"
                  },
                  "active": {
                    "description": "Whether webhook is active or inactive",
                    "type": "boolean",
                    "example": null
                  },
                  "include_branches": {
                    "description": "If enabled, webhook will also be triggered for events from branches of the project specified.",
                    "type": "boolean",
                    "example": null
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/webhooks/{id}": {
      "get": {
        "summary": "Get a single webhook",
        "description": "Get details on a single webhook.",
        "operationId": "webhook/show",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `read` scope, when the requesting user is not allowed to read this webhook, or when the account does not have the Webhooks feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks show \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      },
      "patch": {
        "summary": "Update a webhook",
        "description": "Update an existing webhook.",
        "operationId": "webhook/update",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to update this webhook, or when the account does not have the Webhooks feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X PATCH \\\n  -d '{\"callback_url\":\"http://example.com/hooks/phraseapp-notifications\",\"description\":\"My webhook for chat notifications\",\"events\":\"locales:create,translations:update\"}' \\\n  -H 'Content-Type: application/json'"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks update \\\n--project_id <project_id> \\\n--id <id> \\\n--data '{\"callback_url\": \"http://example.com/hooks/phraseapp-notifications\", \"description\": \"My webhook for chat notifications\", \"events\": \"locales:create,translations:update\"}' \\\n--access_token <token>"
          }
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "title": "webhook/update/parameters",
                "properties": {
                  "callback_url": {
                    "description": "Callback URL to send requests to",
                    "type": "string",
                    "example": "http://example.com/hooks/phraseapp-notifications"
                  },
                  "secret": {
                    "description": "Webhook secret used to calculate signature. If empty, the default project secret will be used.",
                    "type": "string",
                    "example": "secr3t"
                  },
                  "description": {
                    "description": "Webhook description",
                    "type": "string",
                    "example": "My webhook for chat notifications"
                  },
                  "events": {
                    "description": "List of event names to trigger the webhook (separated by comma)",
                    "type": "string",
                    "example": "locales:create,translations:update"
                  },
                  "active": {
                    "description": "Whether webhook is active or inactive",
                    "type": "boolean",
                    "example": null
                  },
                  "include_branches": {
                    "description": "If enabled, webhook will also be triggered for events from branches of the project specified.",
                    "type": "boolean",
                    "example": null
                  }
                }
              }
            }
          }
        },
        "x-cli-version": "2.5"
      },
      "delete": {
        "summary": "Delete a webhook",
        "description": "Delete an existing webhook.",
        "operationId": "webhook/delete",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "204": {
            "$ref": "#/components/responses/204"
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to delete this webhook, or when the account does not have the Webhooks feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:id\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X DELETE"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks delete \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    },
    "/projects/{project_id}/webhooks/{id}/test": {
      "post": {
        "summary": "Test a webhook",
        "description": "Perform a test request for a webhook. Sends a synthetic `test:event` payload to the webhook's `callback_url` and returns the webhook resource.\n",
        "operationId": "webhook/test",
        "tags": [
          "Webhooks"
        ],
        "parameters": [
          {
            "$ref": "#/components/parameters/X-PhraseApp-OTP"
          },
          {
            "$ref": "#/components/parameters/project_id"
          },
          {
            "$ref": "#/components/parameters/id"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/webhook"
                }
              }
            },
            "headers": {
              "X-Rate-Limit-Limit": {
                "$ref": "#/components/headers/X-Rate-Limit-Limit"
              },
              "X-Rate-Limit-Remaining": {
                "$ref": "#/components/headers/X-Rate-Limit-Remaining"
              },
              "X-Rate-Limit-Reset": {
                "$ref": "#/components/headers/X-Rate-Limit-Reset"
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/400"
          },
          "401": {
            "$ref": "#/components/responses/401"
          },
          "403": {
            "$ref": "#/components/responses/403",
            "description": "Forbidden. Returned when the access token lacks the `write` scope, when the requesting user is not allowed to test this webhook, or when the account does not have the Webhooks feature."
          },
          "404": {
            "$ref": "#/components/responses/404"
          },
          "422": {
            "$ref": "#/components/responses/422"
          },
          "429": {
            "$ref": "#/components/responses/429"
          }
        },
        "x-code-samples": [
          {
            "lang": "Curl",
            "source": "curl \"https://api.phrase.com/v2/projects/:project_id/webhooks/:id/test\" \\\n  -u USERNAME_OR_ACCESS_TOKEN \\\n  -X POST"
          },
          {
            "lang": "CLI v2",
            "source": "phrase webhooks test \\\n--project_id <project_id> \\\n--id <id> \\\n--access_token <token>"
          }
        ],
        "x-cli-version": "2.5"
      }
    }
  }
}