SuprSend Translation API

The Translation API from SuprSend — 5 operation(s) for translation.

OpenAPI Specification

suprsend-translation-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: SuprSend Broadcast Translation API
  description: APIs supported on suprsend platform
  version: 1.2.2
servers:
- url: https://hub.suprsend.com
security:
- sec0: []
- BearerAuth: []
tags:
- name: Translation
paths:
  /v1/{workspace}/translation/:
    get:
      summary: List Translations
      description: Retrieve a list of translation files in a workspace. By default, returns draft translations. Use the mode query parameter to filter by draft or live translations.
      operationId: list-translations
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: List Translations
        source: "curl -X GET \"https://management-api.suprsend.com/v1/{workspace}/translation/\" \\\n  --header 'Authorization: ServiceToken <token>' \n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
        description: Workspace slug (staging, production, etc.)
      - in: query
        name: mode
        schema:
          type: string
          enum:
          - draft
          - live
          default: draft
        description: Mode to filter translations (draft or live). By default, draft translations are returned.
      - in: query
        name: limit
        schema:
          type: integer
          description: Maximum number of results per page
          example: 10
        description: Maximum number of results per page
      - in: query
        name: offset
        schema:
          type: integer
          example: 0
        description: Number of results to skip
      responses:
        '200':
          description: Successfully retrieved list of translations
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        description: Total number of translation files
                      limit:
                        type: integer
                        description: Maximum number of results per page
                      offset:
                        type: integer
                        description: Number of results to skip in case offset is passed in the request
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        filename:
                          type: string
                          description: Name of the translation file. Should be in the format of <locale>.json or <namespace>.<locale>.json.
                          example: en.json
                        locale:
                          type: string
                          description: Locale code for the translation file. This would be matched with user locale code to fetch translation.
                          example: en
                        locale_name:
                          type: string
                          description: Human-readable name of the locale
                          example: English
                        namespace:
                          type: string
                          nullable: true
                          description: Namespace for the translation file, if any. Namespace can be used to group translations by feature or module.
                          example: task
                        action:
                          type: string
                          description: action done in the version compared to last commit.
                          enum:
                          - added
                          - updated
                          - deleted
                          - unchanged
                          example: added
                        updated_at:
                          type: string
                          format: date-time
                          description: When the translation file was last updated
              example:
                meta:
                  count: 2
                  limit: 10
                  offset: 0
                results:
                - filename: en.json
                  locale: en
                  locale_name: English
                  namespace: null
                  action: unchanged
                  updated_at: '2025-10-30T12:23:50.380614Z'
                - filename: fr.json
                  locale: fr
                  locale_name: French
                  namespace: null
                  action: added
                  updated_at: '2025-10-28T07:59:43.397124Z'
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Workspace not found
      tags:
      - Translation
  /v1/{workspace}/translation/content/{locale_file}/:
    post:
      summary: Add Translation
      description: Upload or create a new translation file. The file content should be valid JSON following the translation file structure.
      operationId: add-translation
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: Add Translation
        source: "curl -X POST \"https://management-api.suprsend.com/v1/{workspace}/translation/content/{locale_file}/\" \\\n  --header 'Authorization: ServiceToken <token>' \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"content\": {\n      \"welcome\": \"Bienvenue\",\n      \"goodbye\": \"Au revoir\"\n    }\n  }'\n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
        description: Workspace slug (staging, production, etc.)
      - in: path
        name: locale_file
        required: true
        schema:
          type: string
        description: Locale file name (e.g., "fr.json", "es-MX.json", "auth.en.json")
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - locale
              - content
              properties:
                locale:
                  type: string
                  description: Locale file name (e.g., "fr.json", "es-MX.json", "auth.en.json")
                  example: fr.json
                content:
                  type: object
                  description: Translation key-value pairs in JSON format
                  additionalProperties: true
            example:
              locale: fr.json
              content:
                welcome: Bienvenue
                goodbye: Au revoir
                greeting: Bonjour, {{name}}!
      responses:
        '201':
          description: Translation file successfully updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  filename:
                    type: string
                    description: Name of the translation file
                    example: fr.json
                  locale:
                    type: string
                    description: Locale code for the translation file
                    example: fr
                  locale_name:
                    type: string
                    description: Human-readable name of the locale
                    example: French
                  namespace:
                    type: string
                    nullable: true
                    description: Namespace for the translation file, if any. Namespace can be used to group translations by feature or module.
                    example: null
                  action:
                    type: string
                    description: action done in the version compared to last commit.
                    enum:
                    - added
                    - updated
                    - deleted
                    - unchanged
                    example: updated
                  updated_at:
                    type: string
                    format: date-time
                    description: When the translation file was last updated
                  content:
                    type: object
                    description: Translation key-value pairs
                    additionalProperties:
                      type: string
              example:
                filename: fr.json
                locale: fr
                locale_name: French
                namespace: null
                action: updated
                updated_at: '2025-10-29T17:14:33.048313Z'
                content:
                  task_created: Tâche créée
                  task_completed: Tâche terminée
                  task_due: Tâche due
                  task_assigned: Tâche assignée
        '400':
          description: Invalid translation format
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    example: 400
                  error_code:
                    type: string
                    example: validation_error
                  type:
                    type: string
                    example: ValidationError
                  message:
                    type: string
                    example: Invalid JSON format
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Workspace not found
      tags:
      - Translation
    get:
      summary: Get Translation
      description: Retrieve the content of a translation file for a specific locale file.
      operationId: get-translation
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: Get Translation
        source: "curl -X GET \"https://management-api.suprsend.com/v1/{workspace}/translation/content/fr.json/\" \\\n  --header 'Authorization: ServiceToken <token>'\n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
          description: Workspace slug (staging, production, etc.)
      - in: path
        name: locale_file
        required: true
        schema:
          type: string
          description: Locale file name (e.g., "fr.json", "es-MX.json", "auth.en.json")
      - in: query
        name: mode
        schema:
          type: string
          enum:
          - draft
          - live
          default: draft
          description: Mode to fetch translation (draft or live). By default, draft translation is returned.
      responses:
        '200':
          description: Successfully retrieved translation content
          content:
            application/json:
              schema:
                type: object
                properties:
                  filename:
                    type: string
                    description: Name of the translation file
                    example: fr.json
                  locale:
                    type: string
                    description: Locale code for the translation file
                    example: fr
                  locale_name:
                    type: string
                    description: Human-readable name of the locale
                    example: French
                  namespace:
                    type: string
                    nullable: true
                    description: Namespace for the translation file, if any
                    example: null
                  action:
                    type: string
                    description: action done in the version compared to last commit.
                    enum:
                    - added
                    - updated
                    - deleted
                    - unchanged
                    example: updated
                  updated_at:
                    type: string
                    format: date-time
                    description: When the translation file was last updated
                  content:
                    type: object
                    description: Translation key-value pairs
                    additionalProperties:
                      type: string
              example:
                filename: fr.json
                locale: fr
                locale_name: French
                namespace: null
                action: updated
                updated_at: '2025-10-29T17:14:33.048313Z'
                content:
                  task_created: Tâche créée
                  task_completed: Tâche terminée
                  task_due: Tâche due
                  task_assigned: Tâche assignée
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Translation file or workspace not found
      tags:
      - Translation
    delete:
      summary: Delete Translation
      description: Marks a file for deletion in the next commit. Actual deletion will happen when you commit the draft.
      operationId: delete-translation
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: Delete Translation
        source: "curl -X DELETE \"https://management-api.suprsend.com/v1/{workspace}/translation/content/{locale_file}/\" \\\n  --header 'Authorization: ServiceToken <token>' \n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
        description: Workspace slug (staging, production, etc.)
      - in: path
        name: locale_file
        required: true
        schema:
          type: string
        description: Locale file name (e.g., "fr.json", "es-MX.json", "auth.en.json")
        example: fr.json
      responses:
        '204':
          description: Translation file deleted successfully
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Translation file or workspace not found
      tags:
      - Translation
  /v1/{workspace}/translation/version/{version}/:
    get:
      summary: Get Translation History
      description: Retrieve version history information for translations, including all versions and their details.
      operationId: get-translation-history
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: Get Translation History
        source: "curl -X GET \"https://management-api.suprsend.com/v1/{workspace}/translation/version/{version_no}/\" \\\n  --header 'Authorization: ServiceToken <token>' \n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
        description: Workspace slug (staging, production, etc.)
      - in: path
        name: version
        required: true
        schema:
          type: integer
        description: Version number to retrieve
        example: 1
      responses:
        '200':
          description: Successfully retrieved translation version history
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        description: Total number of translation files
                      limit:
                        type: integer
                        description: Maximum number of results per page
                      offset:
                        type: integer
                        description: Number of results to skip in case offset is passed in the request
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        filename:
                          type: string
                          description: Name of the translation file. Should be in the format of <locale>.json or <namespace>.<locale>.json.
                          example: en.json
                        locale:
                          type: string
                          description: Locale code for the translation file. This would be matched with user locale code to fetch translation.
                          example: en
                        locale_name:
                          type: string
                          description: Human-readable name of the locale
                          example: English
                        namespace:
                          type: string
                          nullable: true
                          description: Namespace for the translation file, if any. Namespace can be used to group translations by feature or module.
                          example: task
                        action:
                          type: string
                          description: action done in the version compared to last commit.
                          enum:
                          - added
                          - updated
                          - deleted
                          - unchanged
                          example: added
                        updated_at:
                          type: string
                          format: date-time
                          description: When the translation file was last updated
              example:
                meta:
                  count: 2
                  limit: 10
                  offset: 0
                results:
                - filename: en.json
                  locale: en
                  locale_name: English
                  namespace: null
                  action: unchanged
                  updated_at: '2025-10-30T12:23:50.380614Z'
                - filename: fr.json
                  locale: fr
                  locale_name: French
                  namespace: null
                  action: added
                  updated_at: '2025-10-28T07:59:43.397124Z'
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Version or workspace not found
      tags:
      - Translation
  /v1/{workspace}/translation/version/{version_no}/rollback/:
    post:
      summary: Rollback Translation
      description: Rollback translations to a previous version. This will replace all files with what was available at the previous version.
      operationId: rollback-translation
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: Rollback Translation
        source: "curl -X POST \"https://stagingapi.suprsend.com/v1/{workspace}/translation/version/{version_no}/rollback/\" \\\n  --header 'Authorization: ServiceToken <token>'\n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
        description: Workspace slug (staging, production, etc.)
      - in: path
        name: version_no
        required: true
        schema:
          type: integer
        description: Version number to rollback to
        example: 1
      responses:
        '200':
          description: Details of available translation files after rollback.
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        description: Total number of translation files
                      limit:
                        type: integer
                        description: Maximum number of results per page
                      offset:
                        type: integer
                        description: Number of results to skip in case offset is passed in the request
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        filename:
                          type: string
                          description: Name of the translation file. Should be in the format of <locale>.json or <namespace>.<locale>.json.
                          example: en.json
                        locale:
                          type: string
                          description: Locale code for the translation file. This would be matched with user locale code to fetch translation.
                          example: en
                        locale_name:
                          type: string
                          description: Human-readable name of the locale
                          example: English
                        namespace:
                          type: string
                          nullable: true
                          description: Namespace for the translation file, if any. Namespace can be used to group translations by feature or module.
                          example: task
                        action:
                          type: string
                          description: action done in the version compared to last commit.
                          enum:
                          - added
                          - updated
                          - deleted
                          - unchanged
                          example: added
                        updated_at:
                          type: string
                          format: date-time
                          description: When the translation file was last updated
              example:
                meta:
                  count: 2
                  limit: 10
                  offset: 0
                results:
                - filename: en.json
                  locale: en
                  locale_name: English
                  namespace: null
                  action: unchanged
                  updated_at: '2025-10-30T12:23:50.380614Z'
                - filename: fr.json
                  locale: fr
                  locale_name: French
                  namespace: null
                  action: added
                  updated_at: '2025-10-28T07:59:43.397124Z'
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Version or workspace not found
      tags:
      - Translation
  /v1/{workspace}/translation/commit/:
    patch:
      summary: Commit Translation
      description: Commit all files changes to make them live.
      operationId: commit-translation
      servers:
      - url: https://management-api.suprsend.com
      security:
      - ServiceTokenAuth: []
      x-codeSamples:
      - lang: cURL
        label: Commit Translation
        source: "curl -X PATCH \"https://management-api.suprsend.com/v1/{workspace}/translation/commit/\" \\\n  --header 'Authorization: ServiceToken <token>'\n"
      parameters:
      - in: path
        name: workspace
        required: true
        schema:
          type: string
        description: Workspace slug (staging, production, etc.)
      - in: query
        name: commit_message
        required: false
        schema:
          type: string
        description: Commit message describing the changes
      responses:
        '202':
          description: Translations committed successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  meta:
                    type: object
                    properties:
                      count:
                        type: integer
                        description: Total number of translation files
                      limit:
                        type: integer
                        description: Maximum number of results per page
                      offset:
                        type: integer
                        description: Number of results to skip in case offset is passed in the request
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        filename:
                          type: string
                          description: Name of the translation file. Should be in the format of <locale>.json or <namespace>.<locale>.json.
                          example: en.json
                        locale:
                          type: string
                          description: Locale code for the translation file. This would be matched with user locale code to fetch translation.
                          example: en
                        locale_name:
                          type: string
                          description: Human-readable name of the locale
                          example: English
                        namespace:
                          type: string
                          nullable: true
                          description: Namespace for the translation file, if any. Namespace can be used to group translations by feature or module.
                          example: task
                        action:
                          type: string
                          description: action done in the version compared to last commit.
                          enum:
                          - added
                          - updated
                          - deleted
                          - unchanged
                          example: added
                        updated_at:
                          type: string
                          format: date-time
                          description: When the translation file was last updated
              example:
                meta:
                  count: 2
                  limit: 10
                  offset: 0
                results:
                - filename: en.json
                  locale: en
                  locale_name: English
                  namespace: null
                  action: unchanged
                  updated_at: '2025-10-30T12:23:50.380614Z'
                - filename: fr.json
                  locale: fr
                  locale_name: French
                  namespace: null
                  action: added
                  updated_at: '2025-10-28T07:59:43.397124Z'
        '401':
          $ref: '#/components/responses/AuthenticationError'
          description: AuthenticationFailed - Invalid service token.
        '404':
          $ref: '#/components/responses/NotFoundError'
          description: Workspace not found
      tags:
      - Translation
components:
  responses:
    NotFoundError:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 404
            error_code: not_found
            type: NotFound
            message: workspace 'demo' not found
            detail: workspace 'demo' not found
    AuthenticationError:
      description: Authentication failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
          example:
            code: 401
            error_code: authentication_failed
            type: AuthenticationFailed
            message: Invalid service token.
            detail: Invalid service token.
  schemas:
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
          description: HTTP status code
        error_code:
          type: string
          description: Specific error code identifier
        type:
          type: string
          description: Error type classification
        message:
          type: string
          description: Human-readable error message
        detail:
          type: string
          description: Additional error details
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API_Key
      description: Pass as `Bearer <API_KEY>`. Get API Key from SuprSend dashboard Developers -> API Keys section.
    ServiceTokenAuth:
      type: apiKey
      in: header
      name: ServiceToken <token>
      description: You can get Service Token from [SuprSend dashboard -> Account Settings -> Service Tokens](https://app.suprsend.com/en/account-settings/service-tokens) section.
    sec0:
      type: apiKey
      in: header
      name: Authorization
      x-bearer-format: bearer
      description: Bearer authentication header of the form `Bearer <token>`, where <token> is your auth token.
x-readme:
  headers: []
  explorer-enabled: true
  proxy-enabled: true
x-readme-fauxas: true