openapi: 3.0.3 info: title: Phrase Strings API Reference Accounts Invitations API 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: 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. ' paths: /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 \ --account_id \ --access_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 \ --account_id \ --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}"}'' \ --access_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 \ --account_id \ --id \ --access_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' '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 \ --account_id \ --id \ --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}"}'' \ --access_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' '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 \ --account_id \ --id \ --access_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' '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 \ --account_id \ --id \ --access_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' '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 \ --project_id \ --id \ --data ''{"project_role":"Developer","locale_ids":["fff565db236400772368235db2c6117e","fff565db236400772368235db2c6117f"]}'' \ --access_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' components: schemas: 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/space_short' project_role: type: array 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 space_short: 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 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' 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' errors: 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 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 headers: 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 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 X-Rate-Limit-Limit: description: The number of allowed requests in the current period schema: type: integer X-Rate-Limit-Remaining: description: The number of remaining requests in the current period schema: type: integer Link: description: 'Links to related resources, in the format defined by [RFC 5988](https://tools.ietf.org/html/rfc5988#section-5). This will include a link with relation type `next` to the next page, if there is a next page.' schema: type: string responses: '429': description: Rate Limiting 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 content: application/json: schema: $ref: '#/components/schemas/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': description: Bad request 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' '403': description: Forbidden 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 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 parameters: X-PhraseApp-OTP: in: header name: X-PhraseApp-OTP description: Two-Factor-Authentication token (optional) required: false allowEmptyValue: false schema: type: string 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 id: in: path name: id description: ID required: true schema: type: string account_id: in: path name: account_id description: Account ID required: true schema: type: string project_id: in: path name: project_id description: Project ID required: true schema: type: string page: in: query name: page description: Page number required: false allowEmptyValue: false schema: type: integer example: 1 securitySchemes: Token: type: apiKey in: header name: Authorization description: Enter your token in the format `token TOKEN` Basic: type: http scheme: basic x-tagGroups: - name: Core Resources tags: - Projects - Locales - Keys - 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: - 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