openapi: 3.0.3
info:
title: Phrase Strings API Reference Accounts Members 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: 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.
'
paths:
/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 \
--account_id <account_id> \
--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 \
--account_id <account_id> \
--id <id> \
--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. 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'
'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 \
--account_id <account_id> \
--id <id> \
--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}"}'' \
--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.
type: string
example: abcd1234abcd1234abcd1234,abcd1234abcd1234abcd1235
default_locale_codes:
description: List of default locales for the user.
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'
'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 \
--account_id <account_id> \
--id <id> \
--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'
'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 \
--project_id <project_id> \
--id <id> \
--data ''{"project_role":"Developer","locale_ids":["fff565db236400772368235db2c6117e","fff565db236400772368235db2c6117f"]}'' \
--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'
components:
schemas:
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
project_member_specific:
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'
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
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'
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
project_locales:
allOf:
- $ref: '#/components/schemas/project_member_specific'
- type: object
title: project_locales
properties:
locales:
type: array
items:
$ref: '#/components/schemas/locale_preview'
example:
locales:
- 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'
'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