Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

This documentation is incomplete. New endpoints will continue to be published from time to time.

Note

The APIs in this part of the documentation are in beta, and may be subject to change without prior notice.

Parameters

The following parameters are required (and should never be hardcoded) to make requests:

Parameter

Usage

Globalese base URL

Your Globalese instance URL, e.g. https://acme.globalese.ai.

Requests must be sent to this base URL + /api/v3 + the endpoint.

API key

Must be sent in the request header as Authorization: Bearer <API key>

A valid API key can be:

Endpoints

Open api
filternone
supportedSubmitMethodsnone
showUrlfalse
openapi: 3.0.2
servers: []
info:
  title: Globalese
  version: "3-beta"
  description: Globalese API v3 beta
tags
tags:
  - name: Corpora
  - name: Engines
  - name: Engine instances
  - name: Groups
  - name: Languages
  - name: Projects
  - name: Project files
  - name: Segment translation dispatchers
  - name: Training jobs
  - name: Translation jobs
paths:
  /enginescorpora:
    get:
      tags:
        - EnginesCorpora
      security:
        - bearer: [ ]
      summary: List enginescorpora
      description: |
        Returns a collection of enginescorpora.
      parameters:
  A translation API key can also be- used for authentication.
      parameters:$ref: '#/components/parameters/stringIds'
        - $ref: '#/components/parameters/limitmax100limitMax100'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/sourceLanguage'
        - $ref: '#/components/parameters/targetLanguage'
        - $ref: '#/components/parameters/groupIds'
        - name$ref: sort'#/components/parameters/engineId'
        -  in$ref: query'#/components/parameters/metadataDomain'
        -  schema:$ref: '#/components/parameters/metadataSubject'
        - $ref: '#/components/parameters/metadataClient'
 type: string      - $ref: '#/components/parameters/metadataProject'
    enum:    - $ref: '#/components/parameters/metadataDescription'
        - name$ref:asc
 '#/components/parameters/corpusCatServerId'
        - name: name
  - name:desc       responsesin: query
       200:   description: Full or partial corpus name for filtering.
description: OK           contentschema:
            application/jsontype: string
        - name: sort
  schema:        in: query
       $ref: '#/components/schemas/EngineCollection'  schema:
      401:      type: string
   $ref: '#/components/responses/401Unauthorized'         500enum:
          $ref: '#/components/responses/500InternalServerError'   /engine-instances name:asc
    get:          - tagsname:desc
           -  Engine instances
- counts.segment_count:asc
     security:         - bearercounts.segment_count:desc
[ ]     responses:
 summary: List engine instances    200:
  description: |       description: OK
Returns a collection of engine instances (being) deployed.   content:
      Required permissions: `MANAGE_ENGINES|TRANSLATE|SYSTEM_ADMINISTRATOR`    application/json:
     A translation API key can also be used for authentication.schema:
      parameters:         - $ref: '#/components/parametersschemas/numericalIdsCorpusCollection'
        - $ref401:
'#/components/parameters/engineIds'         - $ref: '#/components/parametersresponses/groupIds401Unauthorized'
        - $ref403:
'#/components/parameters/limitmax100'         - $ref: '#/components/parametersresponses/offset403Forbidden'
      responses:  500:
      200:    $ref: '#/components/responses/500InternalServerError'
     descriptionpost:
OK      tags:
    content:     - Corpora
      application/jsonsecurity:
        - bearer: [ ]
  schema:    summary: Upload a new corpus
        $refdescription: '#/components/schemas/EngineInstanceCollection'|
        401:The `source_language` and `target_language` are required for these formats:
  $ref: '#/components/responses/401Unauthorized'     * `csv-comma`
  403:      * `csv-memoq`
   $ref: '#/components/responses/403Forbidden'    * `csv-semicolon`
   500:     * `tsv`

   $ref: '#/components/responses/500InternalServerError'    Only post:a single file may be uploaded in tags:one request. Maximum file size: 600 MB.

 - Engine instances     A file security:can be uploaded as a zip archive.
  - bearer: [ ]   The zip archive  summary: Create a new engine instance
      description: |
        Starts deploying an engine in the background.

        Required permissions: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      requestBodymay only contain one file, and the file format must be provided in the `format` field.

        The `Content-Disposition` header must contain the `filename` directive.
        This is taken care of by most libraries in general.

        E.g. `Content-Disposition: form-data; name="Example TM"; filename="example.xliff"`

        Required permissions:
        `MANAGE_CORPORA` in all the groups the corpus is uploaded to,
        or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateCorpus'
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Corpus'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /corpora/{corpusId}:
    parameters:
      - $ref: '#/components/parameters/corpusIdInPath'
    get:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: Show the details of a corpus
      description: |
        Returns a single corpus.

        Required permissions:
        `MANAGE_CORPORA` in any of the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Corpus'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    patch:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: Update a corpus
      description: |
        Required permissions:
        `MANAGE_CORPORA` in all the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/UpdateCorpus'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Corpus'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
    delete:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: Delete a corpus
      description: |
        Delete a corpus.

        Required permissions:
        `MANAGE_CORPORA` in all the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      responses:
        204:
          $ref: '#/components/responses/204NoContent'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /corpora/{corpusId}/content:
    parameters:
      - $ref: '#/components/parameters/corpusIdInPath'
    get:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: Corpus content
      description: |
        Returns segments of a corpus.

        Required permissions:
        `MANAGE_CORPORA` in any of the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      parameters:
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorpusContent'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /corpora/{corpusId}/events:
    parameters:
      - $ref: '#/components/parameters/corpusIdInPath'
    get:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: Show the event log of a corpus
      description: |
        Returns a list of events from the corpus log.

        Required permissions:
        `MANAGE_CORPORA` in any of the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      parameters:
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - timestamp:asc
              - timestamp:desc
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorpusEventCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /corpora/{corpusId}/versions:
    parameters:
      - $ref: '#/components/parameters/corpusIdInPath'
    get:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: List all versions of a corpus
      description: |
        Returns details about each version of a corpus:
        * corpus counts
        * engine IDs that used the corpus version for training

        Required permissions:
        `MANAGE_CORPORA` or `MANAGE_ENGINES` in any of the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      parameters:
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - counts.segment_count:asc
              - counts.segment_count:desc
              - version:asc
              - version:desc
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorpusVersionCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    post:
      tags:
        - Corpora
      security:
        - bearer: [ ]
      summary: Update corpus content
      description: |
        Update the contents of a corpus, creating a new version thereof.

        The format of the uploaded content must be the same as the format of the original content.

        The language codes of the uploaded content must be the same as the original ones.

        Required permissions:
        `MANAGE_CORPORA` in any of the groups the corpus belongs to,
        or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/UpdateCorpusContent'
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CorpusVersion'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /engines:
    get:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: List engines
      description: |
        Returns a collection of engines.

        A translation API key can also be used for authentication.
      parameters:
        - $ref: '#/components/parameters/numericalIds'
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
        - $ref: '#/components/parameters/sourceLanguage'
        - $ref: '#/components/parameters/targetLanguage'
        - $ref: '#/components/parameters/engineStatuses'
        - $ref: '#/components/parameters/groupIds'
        - name: name
          in: query
          description: Full or partial engine name for filtering.
          schema:
            type: string
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - name:asc
              - name:desc
              - status:asc
              - status:desc
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        500:
          $ref: '#/components/responses/500InternalServerError'
    post:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: Create a new engine
      description: |
        Restrictions:

        * Using stock corpora and stock engines are mutually exclusive options.
        * Stock+ engines (i.e. engines based on a stock engine) can only have core corpora.

        Required permissions: `MANAGE_ENGINES` in the group the engine belongs to, or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateEngine'
      responses:
        201:
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Engine'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        402:
          description: |
            Maximum number of allowed engines reached.
            Only applies to legacy subscriptions.
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
        502:
          $ref: '#/components/responses/502BadGateway'
  /engines/{engineId}:
    parameters:
      - $ref: '#/components/parameters/engineIdInPath'
    get:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: Show the details of an engine
      description: |
        Returns a single engine.

        Required permissions: `MANAGE_ENGINES`, `MANAGE_PROJECTS` or `TRANSLATE` in the group the engine belongs to, or `SYSTEM_ADMINISTRATOR`

        A translation API key can also be used for authentication.
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Engine'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    patch:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: Update an engine
      description: |
        Required permissions: `MANAGE_ENGINES` in the group the engine belongs to, or `SYSTEM_ADMINISTRATOR`

        The `published` property can only be changed if the engine has been trained or tuned before.
      requestBody:
        $ref: '#/components/requestBodies/UpdateEngine'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Engine'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    delete:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: Delete an engine
      description: |
        Delete an engine.

        Required permissions: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      responses:
        204:
          $ref: '#/components/responses/204NoContent'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /engines/{engineId}/events:
    parameters:
      - $ref: '#/components/parameters/engineIdInPath'
    get:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: Show the event log of an engine
      description: |
        Returns a list of events from the engine log.

        Required permissions: `MANAGE_ENGINES` in the group the engine belongs to, or `SYSTEM_ADMINISTRATOR`
      parameters:
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - timestamp:asc
              - timestamp:desc
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineEventCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /engines/{engineId}/resources:
    parameters:
      - $ref: '#/components/parameters/engineIdInPath'
    get:
      tags:
        - Engines
      security:
        - bearer: [ ]
      summary: Show the resources of an engine
      description: |
        Returns the resources of a single engine.

        Required permissions: `MANAGE_ENGINES` or `MANAGE_PROJECTS` in the group the engine belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineResources'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /engine-instances:
    get:
      tags:
        - Engine instances
      security:
        - bearer: [ ]
      summary: List engine instances
      description: |
        Returns a collection of engine instances (being) deployed.

        Required permissions: `MANAGE_ENGINES|TRANSLATE|SYSTEM_ADMINISTRATOR`

        A translation API key can also be used for authentication.
      parameters:
        - $ref: '#/components/parameters/numericalIds'
        - $ref: '#/components/parameters/engineIds'
        - $ref: '#/components/parameters/groupIds'
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineInstanceCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
    post:
      tags:
        - Engine instances
      security:
        - bearer: [ ]
      summary: Create a new engine instance
      description: |
        Starts deploying an engine in the background.

        Required permissions: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateEngineInstance'
      responses:
        202:
          description: The newly created engine instance entity in the database.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineInstance'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /engine-instances/{id}:
    parameters:
      - name: id
        description: Engine instance ID
        in: path
        required: true
        schema:
          type: integer
    get:
      tags:
        - Engine instances
      security:
        - bearer: [ ]
      summary: Show the details of an engine instance
      description: |
        Returns a single engine instance.

        Required permissions: `MANAGE_ENGINES|TRANSLATE|SYSTEM_ADMINISTRATOR`

        A translation API key can also be used for authentication.
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EngineInstance'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
        502:
          $ref: '#/components/responses/502BadGateway'
    delete:
      tags:
        - Engine instances
      security:
        - bearer: [ ]
      summary: Delete an engine instance
      description: |
        Removes a deployed engine instance.

        Required permissions: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      responses:
        204:
          $ref: '#/components/responses/204NoContent'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
        502:
          $ref: '#/components/responses/502BadGateway'
  /groups:
    get:
      tags:
        - Groups
      security:
        - bearer: [ ]
      summary: List groups
      description: Returns a collection of groups the authenticated user is a member of.
      parameters:
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - name:asc
              - name:desc
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /jobs/training:
    get:
      tags:
        - Training jobs
      summary: List training jobs
      description: |
        Required permission: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      security:
        - bearer: [ ]
      parameters:
        - $ref: '#/components/parameters/engineIds'
        - $ref: '#/components/parameters/groupIds'
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - timestamps.created_at:asc
              - timestamps.created_at:desc
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingJobCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
    post:
      tags:
        - Training jobs
      security:
        - bearer: [ ]
      summary: Create a training job
      description: |
        Required permission: `MANAGE_ENGINES` in the group the engine belongs to, or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateTrainingJob'
      responses:
        201:
          description: Training job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingJob'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        402:
          description: License does not allow new training jobs to be created
        403:
          $ref: '#/components/responses/403Forbidden'
        409:
          description: Engine is already being trained
        500:
          $ref: '#/components/responses/500InternalServerError'
        502:
          $ref: '#/components/responses/502BadGateway'
        504:
          $ref: '#/components/responses/504GatewayTimeout'
  /jobs/training/{id}:
    parameters:
      - name: id
        description: Training job ID
        in: path
        required: true
        schema:
          type: integer
    get:
      tags:
        - Training jobs
      security:
        - bearer: []
      summary: Show the details of a training job
      description: |
        Required permission: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TrainingJob'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /jobs/translation:
    get:
      tags:
        - Translation jobs
      summary: List translation jobs
      description: |
        Required permission: `MANAGE_PROJECTS|SYSTEM_ADMINISTRATOR`
      security:
        - bearer: [ ]
      parameters:
        - $ref: '#/components/parameters/fileIds'
        - $ref: '#/components/parameters/groupIds'
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - timestamps.created_at:asc
              - timestamps.created_at:desc
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationJobCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
    post:
      tags:
        - Translation jobs
      security:
        - bearer: [ ]
      summary: Create a translation job
      description: |
        Required permission: `MANAGE_PROJECTS` in the group the file (and project) belongs to, or `SYSTEM_ADMINISTRATOR`

        If the engine is not published, it can be used for document translation only by users with at least one of the following permissions:
          - `MANAGE_ENGINES` for the group the engine belongs to
          - `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateTranslationJob'
      responses:
        201:
          description: Translation job created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationJob'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        402:
          description: License does not allow new translation jobs to be created
        403:
          $ref: '#/components/responses/403Forbidden'
        409:
          description: File is already being translated
        500:
          $ref: '#/components/responses/500InternalServerError'
        502:
          $ref: '#/components/responses/502BadGateway'
        504:
          $ref: '#/components/responses/504GatewayTimeout'
  /jobs/translation/{id}:
    parameters:
      - name: id
        description: Translation job ID
        in: path
        required: true
        schema:
          type: integer
    get:
      tags:
        - Translation jobs
      security:
        - bearer: []
      summary: Show the details of a translation job
      description: |
        Required permission: `MANAGE_PROJECTS|SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationJob'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /languages:
    get:
      tags:
        - Languages
      security:
        - bearer: [ ]
      summary: List languages
      description: |
        Returns a collection of languages used in Globalese.

        A translation API key can also be used for authentication.
      parameters:
        - $ref: '#/components/parameters/languageUsage'
        - $ref: '#/components/parameters/limit'
        - $ref: '#/components/parameters/offset'
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LanguageCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /projects:
    post:
      tags:
        - Projects
      security:
        - bearer: [ ]
      summary: Create a new project
      description: |
        One of either `engine_id` or `stock_engine_uuid` is required.

        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`

        Required permissions to set engine version: `MANAGE_ENGINES` and `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateProject'
      responses:
        201:
          description: Project created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /projects/{projectId}:
    parameters:
      - $ref: '#/components/parameters/projectIdInPath'
    get:
      tags:
        - Projects
      security:
        - bearer: [ ]
      summary: Show the details of a project
      description: |
        Returns a single project.

        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    patch:
      tags:
        - Projects
      security:
        - bearer: [ ]
      summary: Update a project
      description: |
        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`

        Required permissions to change engine version: `MANAGE_ENGINES` and `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/UpdateProject'
      responses:
        200:
          description: Project updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    delete:
      tags:
        - Projects
      security:
        - bearer: [ ]
      summary: Delete a project
      description: |
        Deletes a project as well as all the project files contained within.

        Required permission: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        204:
          $ref: '#/components/responses/204NoContent'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /projects/{projectId}/files:
    parameters:
      - $ref: '#/components/parameters/projectIdInPath'
    get:
      tags:
        - Project files
      security:
        - bearer: [ ]
      summary: List project files
      description: |
        Returns a collection of project files.

        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      parameters:
        - $ref: '#/components/parameters/stringIds'
        - $ref: '#/components/parameters/fileStatuses'
        - $ref: '#/components/parameters/limitMax100'
        - $ref: '#/components/parameters/offset'
        - name: sort
          in: query
          schema:
            type: string
            enum:
              - name:asc
              - name:desc
              - latest_events.translation_finished.timestamp:asc
              - latest_events.translation_finished.timestamp:desc
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    post:
      tags:
        - Project files
      security:
        - bearer: [ ]
      summary: Upload new project files
      description: |
        Only one file can be uploaded at the same time.
        A file can be uploaded as a ZIP. The ZIP may contain more files, but the formats of these files must be the same.

        The HTTP Content-Disposition header must contain the `filename` directive. Most often it happens automatically.
        E.g. `Content-Disposition: form-data; name="file"; filename="example.xliff"`

        Required permissions: `MANAGE_PROJECTS` in the groups the project belongs to, or `SYSTEM_ADMINISTRATOR`
      requestBody:
        $ref: '#/components/requestBodies/CreateFile'
      responses:
        201:
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                  - files
                properties:
                  files:
                    type: array
                    items:
                      $ref: '#/components/schemas/File'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /projects/{projectId}/files/{fileId}:
    parameters:
      - $ref: '#/components/parameters/projectIdInPath'
      - $ref: '#/components/parameters/fileIdInPath'
    get:
      tags:
        - Project files
      security:
        - bearer: [ ]
      summary: Show the details of a project file
      description: |
        Returns a single project file.

        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/File'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
    delete:
      tags:
        - Project files
      security:
        - bearer: [ ]
      summary: Delete a project file
      description: |
        Delete a project file.

        Required permission: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        204:
          $ref: '#/components/responses/204NoContent'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /projects/{projectId}/translated-files:
    parameters:
      - $ref: '#/components/parameters/projectIdInPath'
      - name: files
        in: query
        schema:
          type: string
        description: |
          One or more file IDs to include in the downloaded zip file.

          Examples: `5b04a7263fa509.a4444794`, `5b04a7263fa509.a4444794,5b0412363fa5c1.a4354792`
    get:
      tags:
        - Project files
      security:
        - bearer: [ ]
      summary: Download translated project files
      description: |
        Returns a zip file containing all or the specified translated files.
        Untranslated files are not returned, even if their IDs are specified in the request.

        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        200:
          $ref: '#/components/responses/200OctetStream'
        400:
          $ref: '#/components/responses/400BadRequest'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /projects/{projectId}/files/{fileId}/translated-file:
    parameters:
      - $ref: '#/components/parameters/projectIdInPath'
      - $ref: '#/components/parameters/fileIdInPath'
    get:
      tags:
        - Project files
      security:
        - bearer: [ ]
      summary: Download a translated project file
      description: |
        Required permissions: `MANAGE_PROJECTS` in the group the project belongs to, or `SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/octet-stream:
              schema:
                type: string
                example: >-
                  <?xml version='1.0'?><xliff>[file content]</xliff>
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        404:
          $ref: '#/components/responses/404NotFound'
        500:
          $ref: '#/components/responses/500InternalServerError'
  /segment-translation-dispatchers:
    get:
      tags:
        - Segment translation dispatchers
      security:
        - bearer: [ ]
      summary: List segment translation dispatchers
      description: |
        Required permissions: `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`
      responses:
        200:
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RemoteDispatcherCollection'
        401:
          $ref: '#/components/responses/401Unauthorized'
        403:
          $ref: '#/components/responses/403Forbidden'
        500:
          $ref: '#/components/responses/500InternalServerError'
        502:
          $ref: '#/components/responses/502BadGateway'
components:
  parameters:
    corpusCatServerId:
      name: cat.server.id
      in: query
      description: |
        The ID of the CAT server the corpus is associated with.
      schema:
        type: number
        example: 10
    corpusIdInPath:
      name: corpusId
      description: Corpus ID
      in: path
      required: true
      schema:
        type: string
        example: 5b04a7263fa509.a4444794
    engineId:
      name: engine_id
      in: query
      description: |
        Engine ID for filtering.

        Examples: `1`, `2`
      schema:
        $ref: '#/components/schemas/engineId'
    engineIdInPath:
      name: engineId
      in: path
      required: true
      schema:
        type: integer
        example:
          5
    engineIds:
      name: engine_ids
      in: query
      description: |
        One or more engine ID(s) for filtering, comma-separated.

        Examples: `1`, `1,3,5`
      schema:
        oneOf:
          - type: integer
          - type: string
    engineStatuses:
      name: statuses
      in: query
      description: |
        One or more engine statuses for filtering, comma-separated.

        Examples: `trained`, `queued,training`
      schema:
        type: string
        enum:
          - changed
          - error
          - queued
          - trained
          - training
          - tuned
          - tuning
          - untrained
    fileIdInPath:
      name: fileId
      description: Project file ID
      in: path
      required: true
      schema:
        type: string
        example: 5b04a7263fa509.a4444794
    fileIds:
      name: file_ids
      in: query
      description: |
        One or more file ID(s) for filtering, comma-separated.

        Examples: `5b04a7263fa509.a4444794`, `5b04a7263fa509.a4444794,5b04a7199fa509.a4444401`
      schema:
        - type: string
    fileStatuses:
      name: statuses
      in: query
      description: |
        One or more file statuses for filtering, comma-separated.

        Examples: `new`, `translating,translated`
      schema:
        type: string
        enum:
          - empty
          - new
          - queued
          - translated
          - translating
    groupIds:
      name: group_ids
      in: query
      description: |
        One or more group ID(s) for filtering, comma-separated.

        Examples: `1`, `1,3,5`
      schema:
        oneOf:
          - type: integer
          - type: string
      style: form
      explode: false
    languageUsage:
      name: usage
      in: query
      description: |
        Filter for languages used in Globalese.

        Optionally, the `:source` or `:target` modifier may be appended to the parameter value to filter for languages used on the source or target language side only.

        `usage=engines:source` will return a list of languages used as engine source languages.

        `usage=engines` will return a list of languages used as engine languages, either source or target.
      schema:
        type: string
        enum:
          - engines
    limit:
      name: limit
      in: query
      description: |
        Limit for results. *May* be used together with `offset`.

        Examples: `25`, `50`
      schema:
        type: integer
    limitMax100:
      name: limit
      in: query
      description: |
        Limit for results. It cannot be greater than 100. *May* be used together with `offset`.

        Examples: `25`, `50`

        If not provided, it will automatically be set to 100.
      schema:
        type: integer
        example: 25
    metadataClient:
      name: metadata.client
      in: query
      description: |
        Client metadata descriptor.

        Examples: `Very Important Client`
      schema:
        type: string
    metadataDescription:
      name: metadata.description
      in: query
      description: |
        Description metadata descriptor.

        Examples: `used for 2018 campaign`
      schema:
        type: string
    metadataDomain:
      name: metadata.domain
      in: query
      description: |
        Domain metadata descriptor.

        Examples: `legal`
      schema:
        type: string
    metadataProject:
      name: metadata.project
      in: query
      description: |
        Project metadata descriptor.

        Examples: `0192 EC Project`
      schema:
        type: string
    metadataSubject:
      name: metadata.subject
      in: query
      description: |
        Subject metadata descriptor.

        Examples: `EU treaties`
      schema:
        type: string
    numericalIds:
      name: ids
      in: query
      description: |
        One or more ID(s) for filtering, comma-separated.

        Examples: `3`, `3,4`
      schema:
        type: string
      style: form
      explode: false
    offset:
      name: offset
      in: query
      description: |
        Offset to start query from. **Must** be used together with `limit`.

        Examples: `50`, `100`
      schema:
        type: integer
        example: 0
    projectIdInPath:
      name: projectId
      description: Project ID
      in: path
      required: true
      schema:
        type: integer
        example: 5
    sourceLanguage:
      name: source_language
      in: query
      description: |
        Source language.

        Examples: `en`, `fr`
      schema:
        type: string
    stringIds:
      name: ids
      in: query
      description: |
        One or more ID(s) for filtering, comma-separated.

        Examples: `5b04a7263fa509.a4444794`, `5b04a7263fa509.a4444794,5b0412363fa5c1.a4354792`
      schema:
        type: string
      style: form
      explode: false
    targetLanguage:
      name: target_language
      in: query
      description: |
        Target language.

        Examples: `en`, `fr`
      schema:
        type: string
  requestBodies:
    CreateCorpus:
      content:
        multipart/form-data:
          schema:
            $ref: '#/components/schemas/CreateCorpus'
    CreateEngine:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateEngine'
      required: true
    CreateEngineInstance:
      required: true
      content:
        application/json:
          schema:
            type: object
            required:
              - engine_id
              - dispatcher_id
            properties:
              engine_id:
                $ref: '#/components/schemas/engineId'
              dispatcher_id:
                $ref: '#/components/schemas/dispatcherId'
    CreateFile:
      content:
        multipart/form-data:
          schema:
            $ref: '#/components/schemas/CreateFile'
    CreateProject:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateProject'
    CreateTrainingJob:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateTrainingJob'
    CreateTranslationJob:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CreateTranslationJob'
    UpdateCorpus:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateCorpus'
    UpdateCorpusContent:
      content:
        multipart/form-data:
          schema:
            $ref: '#/components/schemas/UpdateCorpusContent'
    UpdateEngine:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateEngine'
    UpdateProject:
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UpdateProject'
  responses:
    200OctetStream:
      description: OK
      content:
        application/octet-stream:
          schema:
            type: string
            format: binary
    204NoContent:
      description: No Content
    400BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    401Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    403Forbidden:
      description: Insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    404NotFound:
      description: Resource not found
    422UnprocessableEntity:
      description: Unprocessable entity
    500InternalServerError:
      description: Internal server error while processing the request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    502BadGateway:
      description: Bad Gateway
    504GatewayTimeout:
      description: Gateway Timeout
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: API key
  schemas:
    catToolServerId:
      description: CAT tool server ID in Globalese
      type: integer
      example: 10
    catToolServerType:
      type: string
      enum:
        - memoq
        - memsource
        - smartcat
        - xtm
    CollectionMetadata:
      type: object
      required:
        - counts
      properties:
        counts:
          type: object
          required:
            - total
            - filtered
          properties:
            total:
              description: The total number of resources in the system, irrespective of any filters.
              type: integer
              example: 100
            filtered:
              description: The number of resources in the system matching the filters.
              type: integer
              example: 40
    Corpus:
      type: object
      required:
        - id
        - actions
        - cat
        - counts
        - current_version
        - engines
        - format
        - groups
        - metadata
        - name
        - source_language
        - target_language
      properties:
        id:
          $ref: '#/components/schemas/corpusId'
        actions:
          $ref: '#/components/schemas/CorpusActions'
        cat:
          $ref: '#/components/schemas/CorpusCat'
        counts:
          $ref: '#/components/schemas/CorpusCounts'
        current_version:
          $ref: '#/components/schemas/corpusVersion'
        engine_ids:
          type: array
          items:
            type: integer
          example: [ 2, 8, 14 ]
        format:
          $ref: '#/components/schemas/corpusFormat'
        group_ids:
          $ref: '#/components/schemas/corpusGroupIds'
        metadata:
          $ref: '#/components/schemas/CorpusMetadata'
        name:
          $ref: '#/components/schemas/corpusName'
        source_language:
          $ref: '#/components/schemas/sourceLanguage'
        target_language:
          $ref: '#/components/schemas/targetLanguage'
    CorpusActions:
      type: object
      description: An object describing the actions possible against a corpus.
      required:
        - delete
        - update
      properties:
        delete:
          type: boolean
        update:
          type: boolean
    CorpusCat:
      type: object
      nullable: true
      description: |
        If the corpus was created by retrieving a CAT tool server corpus, this object contains relevant information.
      required:
        - corpus
        - server
      properties:
        corpus:
          $ref: '#/components/schemas/CorpusCatCorpus'
        server:
          $ref: '#/components/schemas/CorpusCatServer'
    CorpusCatCorpus:
      type: object
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/remoteCorpusId'
    CorpusCatServer:
      type: object
      required:
        - id
        - type
      properties:
        id:
          $ref: '#/components/schemas/catToolServerId'
        type:
          $ref: '#/components/schemas/catToolServerType'
    CorpusCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Corpus'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    CorpusContent:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            type: object
            required:
              - id
              - content
            properties:
              id:
                type: string
                example: "1"
                nullable: true
              content:
                type: object
                required:
                  - source
                  - target
                properties:
                  source:
                    type: string
                  target:
                    type: string
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    CorpusCounts:
      type: object
      required:
        - segment_count
        - source_word_count
        - target_word_count
        - source_character_count
        - target_character_count
      properties:
        segment_count:
          type: integer
          example: 145952
        source_word_count:
          type: integer
          example: 2819806
        target_word_count:
          type: integer
          example: 3120176
        source_character_count:
          type: integer
          example: 24235334
        target_character_count:
          type: integer
          example: 29194748
    CorpusEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          properties:
            resource_id:
              $ref: '#/components/schemas/corpusId'
            type:
              type: string
              enum:
                - uploaded
                - updated
                - new_version_uploaded
    CorpusEventCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CorpusEvent'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    corpusFormat:
      type: string
      enum:
        - csv-comma
        - csv-memoq
        - csv-semicolon
        - tmx
        - tbx
        - tsv
        - xliff
        - xliff-memoq
        - xliff-memsource
        - xliff-sdl
        - xliff-smartcat
        - xliff-translate5
        - xliff-wordbee
        - xliff-xtm
    corpusGroupIds:
      type: array
      description: |
        Cannot be empty.
        A corpus must always be assigned to at least one group.
      items:
        type: integer
      example: [ 1, 3 ]
    corpusId:
      description: Corpus ID
      type: string
      example: 5a0ba1267f0571.04642701
    CorpusMetadata:
      type: object
      properties:
        domain:
          type: string
          nullable: true
          example: legal
        subject:
          type: string
          nullable: true
          example: EU treaties
        client:
          type: string
          nullable: true
          example: Very Important Client
        project:
          type: string
          nullable: true
          example: 0192 EC Project
        description:
          type: string
          nullable: true
          example: created by DGT
    corpusName:
      type: string
      example: English to German DGT.tmx
    CorpusVersion:
      type: object
      required:
        - corpus_id
        - version
        - counts
        - engine_ids
        - timestamps
      properties:
        corpus_id:
          $ref: '#/components/schemas/corpusId'
        version:
          $ref: '#/components/schemas/corpusVersion'
        counts:
          $ref: '#/components/schemas/CorpusCounts'
        engine_ids:
          $ref: '#/components/schemas/CorpusVersionEngineIds'
        timestamps:
          $ref: '#/components/schemas/CorpusVersionTimestamps'
    corpusVersion:
      type: integer
      example: 1
    CorpusVersionCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/CorpusVersion'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    CorpusVersionEngineIds:
      type: array
      items:
        type: integer
      example: [ 2, 8, 14 ]
    CorpusVersionTimestamps:
      type: object
      required:
        - created_at
      properties:
        created_at:
          $ref: '#/components/schemas/createdAt'
    CreateCorpus:
      type: object
      required:
        - file
        - format
        - group_ids[]
      properties:
        file:
          type: object
        format:
          $ref: '#/components/schemas/corpusFormat'
        group_ids[]:
          $ref: '#/components/schemas/groupId'
        source_language:
          $ref: '#/components/schemas/sourceLanguage'
        target_language:
          $ref: '#/components/schemas/targetLanguage'
        metadata[domain]:
          type: string
          example: legal
        metadata[subject]:
          type: string
          example: EU treaties
        metadata[client]:
          type: string
          example: Very Important Client
        metadata[project]:
          type: string
          example: 0192 EC Project
        metadata[description]:
          type: string
          example: created by DGT
    CreateEngine:
      type: object
      required:
        - name
        - source_language
        - target_language
        - group_id
        - resources
      properties:
        name:
          type: string
          example: Engine 1
        source_language:
          $ref: '#/components/schemas/sourceLanguage'
        target_language:
          $ref: '#/components/schemas/targetLanguage'
        group_id:
          $ref: '#/components/schemas/groupId'
        resources:
          $ref: '#/components/schemas/CreateEngineResources'
    CreateEngineResources:
      type: object
      required:
        - corpus_ids
      properties:
        corpus_ids:
          $ref: '#/components/schemas/CreateEngineResourcesCorpusIds'
        stock_corpora:
          type: boolean
          description: Whether or not to use available stock corpora for training the engine.
        stock_engine_uuid:
          $ref: '#/components/schemas/nullableStockEngineUuid'
    CreateEngineResourcesCorpusIds:
      type: object
      required:
        - core
      properties:
        core:
          type: array
          items:
            type: string
          example: [ '51fc7ea3fa889.b0027797', '54018363fa5c1.044227af' ]
        auxiliary:
          type: array
          items:
            type: string
          example: [ '5b04a7263fa509.77444794', '5b0412363fa5c1.c4354792' ]
    createdAt:
      description: Created timestamp in ISO 8601 format
      type: string
      example: "2017-08-30T04:34:26+00:00"
    CreateFile:
      type: object
      required:
        - file
        - format
      properties:
        file:
          type: object
        format:
          $ref: '#/components/schemas/fileFormat'
    CreateProject:
      type: object
      required:
        - name
        - source_language
        - target_language
        - group_id
      properties:
        name:
          type: string
          example: Project 1
        source_language:
          $ref: '#/components/schemas/sourceLanguage'
        target_language:
          $ref: '#/components/schemas/targetLanguage'
        group_id:
          $ref: '#/components/schemas/groupId'
        engine_id:
          $ref: '#/components/schemas/nullableEngineId'
        engine_version:
          $ref: '#/components/schemas/nullableEngineVersion'
        stock_engine_id:
          allOf:
            - $ref: '#/components/schemas/nullableStockEngineUuid'
            - deprecated: true
        stock_engine_uuid:
          $ref: '#/components/schemas/nullableStockEngineUuid'
        cat:
          $ref: '#/components/schemas/CreateProjectCat'
    CreateProjectCat:
      type: object
      required:
        - server
        - project
      properties:
        server:
          $ref: '#/components/schemas/CreateProjectCatServer'
        project:
          $ref: '#/components/schemas/CreateProjectCatProject'
    CreateProjectCatServer:
      type: object
      required:
        - id
      properties:
        id:
          type: integer
          description: CAT tool server connection ID as stored in Globalese.
          example: 2
    CreateProjectCatProject:
      type: object
      required:
        - id
      properties:
        id:
          oneOf:
            - type: integer
            - type: string
          description: CAT tool project ID as stored on the CAT tool server.
          example: 5987c27a-da1e-4060-b08d-00aa6dbd0bba
    CreateTrainingJob:
      type: object
      required:
        - engine_id
        - mode
      properties:
        engine_id:
          $ref: '#/components/schemas/engineId'
        mode:
          type: string
          enum:
            - training
            - tuning
    CreateTranslationJob:
      type: object
      required:
        - file_id
      properties:
        file_id:
          $ref: '#/components/schemas/fileId'
    dispatcherId:
      description: Segment-based translation dispatcher ID
      type: integer
      example: 1
    dispatcherRegion:
      type: string
      example: "europe-west1"
    dispatcherUrl:
      type: string
      example: "https://dispatcher-europe-west1-ja6vheawuq-ew.a.run.app"
    Engine:
      type: object
      required:
        - id
        - actions
        - counts
        - group_id
        - health
        - instance_ids
        - name
        - published
        - source_language
        - status
        - stock_corpora
        - stock_engine_id
        - stock_engine_uuid
        - target_language
        - timestamps
        - uuid
        - version
      properties:
        id:
          $ref: '#/components/schemas/engineId'
        actions:
          $ref: '#/components/schemas/EngineActions'
        counts:
          $ref: '#/components/schemas/EngineCounts'
        group_id:
          $ref: '#/components/schemas/groupId'
        health:
          $ref: '#/components/schemas/engineHealth'
        instance_ids:
          type: array
          items:
            $ref: '#/components/schemas/numericalId'
        name:
          type: string
          example: Engine 1
        published:
          type: boolean
          example: true
        source_language:
          $ref: '#/components/schemas/sourceLanguage'
        status:
          $ref: '#/components/schemas/engineStatus'
        stock_corpora:
          type: boolean
          example: true
        stock_engine_id:
          allOf:
            - $ref: '#/components/schemas/nullableStockEngineUuid'
            - deprecated: true
        stock_engine_uuid:
          $ref: '#/components/schemas/nullableStockEngineUuid'
        target_language:
          $ref: '#/components/schemas/targetLanguage'
        timestamps:
          $ref: '#/components/schemas/EngineTimestamps'
        uuid:
          $ref: '#/components/schemas/uuid'
        version:
          type: string
          nullable: true
          example: 3.5.5
    EngineActions:
      type: object
      description: An object describing the actions possible against an engine.
      required:
        - delete
        - deploy
        - train
        - translate
        - tune
        - update
      properties:
        delete:
          type: boolean
        deploy:
          type: boolean
        train:
          type: boolean
        translate:
          type: boolean
        tune:
          type: boolean
        update:
          type: boolean
    EngineCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Engine'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    EngineCorpusIdWithVersion:
      type: object
      required:
        - id
        - version
      properties:
        id:
          $ref: '#/components/schemas/corpusId'
        version:
          $ref: '#/components/schemas/corpusVersion'
    EngineCounts:
      type: object
      required:
        - corpora
      properties:
        corpora:
          type: object
          required:
            - core
            - auxiliary
          properties:
            core:
              type: object
              properties:
                segment_count:
                  type: number
            auxiliary:
              type: object
              properties:
                segment_count:
                  type: number
    EngineEvent:
      allOf:
        - $ref: '#/components/schemas/Event'
        - type: object
          required:
            - note
            - error_code
          properties:
            error_code:
              $ref: '#/components/schemas/errorCode'
            note:
              $ref: '#/components/schemas/engineEventNote'
            resource_id:
              $ref: '#/components/schemas/engineId'
            type:
              type: string
              enum:
                - created
                - deleted
                - instance_deployment_failed
                - instance_deployment_finished
                - instance_deployment_started
                - instance_removal_failed
                - instance_removal_finished
                - instance_removal_started
                - instance_removal_started_by_billing
                - published
                - stock_engine_removed
                - training_cancelled
                - training_failed
                - training_finished
                - training_started
                - tuning_failed
                - tuning_finished
                - tuning_started
                - unpublished
                - updated
    EngineEventCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EngineEvent'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    engineHealth:
      type: string
      nullable: true
      enum:
        - current
        - deprecated
        - supported
        - unsupported
    engineId:
      description: Engine ID
      type: integer
      example: 10
    EngineInstance:
      type: object
      required:
        - id
        - engine_id
        - dispatcher_url
        - status
      properties:
        id:
          $ref: '#/components/schemas/numericalId'
        engine_id:
          $ref: '#/components/schemas/engineId'
        dispatcher_url:
          $ref: '#/components/schemas/dispatcherUrl'
        status:
          $ref: '#/components/schemas/engineInstanceStatus'
    EngineInstanceCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EngineInstance'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    engineInstanceStatus:
      type: string
      enum:
        - deploying
        - error_removal_engine_manager_internal_error
        - error_removal_engine_manager_rejected_request
        - error_removal
        - on
        - queued
        - removing
    EngineResources:
      type: object
      required:
        - corpora
        - stock_corpora
        - stock_engine
      properties:
        corpora:
          $ref: '#/components/schemas/EngineResourcesCorpora'
        stock_corpora:
          type: boolean
        stock_engine:
          $ref: '#/components/schemas/EngineResourcesStockEngine'
    EngineResourcesCorpora:
      type: object
      description: An engine cannot contain more than 500 corpora in total.
      required:
        - core
        - auxiliary
      properties:
        auxiliary:
          type: array
          items:
            $ref: '#/components/schemas/EngineCorpusIdWithVersion'
        core:
          type: array
          items:
            $ref: '#/components/schemas/EngineCorpusIdWithVersion'
    EngineResourcesStockEngine:
      type: object
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/uuid'
    engineStatus:
      type: string
      enum:
        - changed
        - error
        - queued
        - trained
        - training
        - tuned
        - tuning
        - untrained
    Error:
      type: object
      properties:
        error:
          type: string
          example: "Error message."
      required:
        - error
    errorCode:
      type: integer
      nullable: true
      example: 104
    engineEventNote:
      type: string
      nullable: true
      example: Updated to include proofread corpus from latest project.
    EngineTimestamps:
      type: object
      required:
        - deprecated_at
      properties:
        deprecated_at:
          $ref: '#/components/schemas/nullableTimestamp'
    Event:
      type: object
      required:
        - id
        - resource_id
        - timestamp
        - type
        - user
      properties:
        id:
          $ref: '#/components/schemas/numericalId'
        timestamp:
          $ref: '#/components/schemas/timestamp'
        user:
          $ref: '#/components/schemas/EventUser'
    EventUser:
      type: object
      nullable: true
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/userId'
        name:
          $ref: '#/components/schemas/userName'
    File:
      type: object
      required:
        - id
        - actions
        - counts
        - format
        - group_id
        - name
        - project_id
        - source_language
        - status
        - target_language
        - timestamps
      properties:
        id:
          $ref: '#/components/schemas/fileId'
        actions:
          $ref: '#/components/schemas/FileActions'
        cat:
          $ref: '#/components/schemas/FileCat'
        counts:
          $ref: '#/components/schemas/FileCounts'
        format:
          $ref: '#/components/schemas/fileFormat'
        group_id:
          $ref: '#/components/schemas/groupId'
        name:
          type: string
          example: Chapter 1.xliff
        project_id:
          $ref: '#/components/schemas/projectId'
        source_language:
          $ref: '#/components/schemas/sourceLanguage'
        status:
          $ref: '#/components/schemas/fileStatus'
        target_language:
          $ref: '#/components/schemas/targetLanguage'
        timestamps:
          $ref: '#/components/schemas/FileTimestamps'
    FileActions:
      type: object
      description: An object describing the actions possible against a project file.
      required:
        - delete
        - deliver
        - translate
      properties:
        delete:
          type: boolean
        deliver:
          type: boolean
        translate:
          type: boolean
    FileCat:
      type: object
      nullable: true
      description: An object describing the links to a CAT tool file.
      required:
        - file
      properties:
        file:
          $ref: '#/components/schemas/FileCatFile'
    FileCatFile:
      type: object
      required:
        - id
        - type
        - created_at
        - updated_at
        - retrieved_at
        - delivered_at
      properties:
        $refid:
'#/components/requestBodies/CreateEngineInstance'        responses:  oneOf:
      202:      - type: integer
  description: The newly created engine instance entity in the database. - type: string
       content:   example: 5678
        application/jsontype:
          $ref: '#/components/schemas/catToolServerType'
  schema:      created_at:
          $ref: '#/components/schemas/EngineInstancetimestamp'
        400updated_at:
          $ref: '#/components/responsesschemas/400BadRequestnullableTimestamp'
        401retrieved_at:
          $ref: '#/components/responsesschemas/401UnauthorizednullableTimestamp'
        403delivered_at:
          $ref: '#/components/responsesschemas/403Forbidden'nullableTimestamp'
    FileCollection:
      type: object
  500:    required:
        - data
    $ref: '#/components/responses/500InternalServerError'   /engine-instances/{id}:- meta
      parametersproperties:
       - namedata:
id          descriptiontype: Enginearray
instance ID         initems:
 path           required$ref: true'#/components/schemas/File'
        schemameta:
          type$ref: integer'#/components/schemas/CollectionMetadata'
    getFileCounts:
      tagstype: object
      required:
- Engine instances      - security:total
        - bearer:new
[ ]     properties:
 summary: Show the details of an engine instancetotal:
      description: |   $ref: '#/components/schemas/SegmentableCounts'
    Returns a single engine instance.new:
         Required permissions: `MANAGE_ENGINES|TRANSLATE|SYSTEM_ADMINISTRATOR`$ref: '#/components/schemas/SegmentableCounts'
    fileFormat:
    A translation APItype: keystring
can also be used for authentication.
      responses enum:
        200:- xliff
        - description:xliff-idiom
OK           content:
- xliff-memoq
        - xliff-memsource
 application/json:       - xliff-sap
      schema:  - xliff-sdl
        - xliff-smartcat
   $ref: '#/components/schemas/EngineInstance'    - xliff-translate5
   401:     - xliff-wordbee
    $ref: '#/components/responses/401Unauthorized'   - xliff-wordfast
    403:    - xliff-xtm
     $ref: '#/components/responses/403Forbidden'fileId:
        404description: File ID
        $reftype: '#/components/responses/404NotFound'string
      example: 51fc7ea3fa889.a0027797
500:    fileStatus:
      $reftype: '#/components/responses/500InternalServerError'string
        502enum:
        - empty
$ref: '#/components/responses/502BadGateway'     delete:  - new
   tags:     - queued
  - Engine instances    - queueing
 security:       - translated
- bearer: [ ]     - translating
summary: Delete an engine instanceFileTimestamps:
      descriptiontype: |object
      required:
 Removes  a deployed engine instance.  - uploaded_at
      Required  permissions:- `MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`translated_at
      responsesproperties:
        204uploaded_at:
          $ref: '#/components/responsesschemas/204NoContenttimestamp'
        400translated_at:
          $ref: '#/components/responsesschemas/400BadRequestnullableTimestamp'
    Group:
      401type: object
      required:
  $ref: '#/components/responses/401Unauthorized'      - id
     403:   - name
      $refproperties:
'#/components/responses/403Forbidden'         404id:
          $ref: '#/components/responsesschemas/404NotFoundgroupId'
        500name:
          $reftype: '#/components/responses/500InternalServerError'string
          502example: Default
    GroupCollection:
      $reftype: '#/components/responses/502BadGateway' object
   /groups:   required:
 get:       tags:- data
      properties:
- Groups       securitydata:
         - bearer: [ ]type: array
          items:
   summary: List groups       description$ref: Returns a collection of groups the authenticated user is a member of.
 '#/components/schemas/Group'
    groupId:
      description: Group ID
    parameters:  type: integer
     - $refexample: '#/components/parameters/limitmax100'2
    JobTimestamps:
   - $ref: '#/components/parameters/offset'  type: object
     - namerequired:
sort        - created_at
 in: query      - started_at
   schema:     - finishing_at
      typeproperties:
string        created_at:
    enum:      $ref: '#/components/schemas/createdAt'
       - namestarted_at:asc
          description: Timestamp of when -the name:descjob started in ISO 8601 format
 responses:         200type: string
         description nullable: true
OK           content:example: "2017-08-30T04:34:26+00:00"
        finishing_at:
   application/json:       description: Timestamp of when the job is estimated schema:to finish in ISO 8601 format
           $reftype: '#/components/schemas/GroupCollection'string
        401:  nullable: true
       $ref: '#/components/responses/401Unauthorized'  example: "2043-11-03T07:53:10+00:00"
     403Language:
      type: object
  $ref: '#/components/responses/403Forbidden'   required:
     500:   - id
      $refproperties:
'#/components/responses/500InternalServerError'   /languages:     getid:
      tags:    type: string
   - Languages       securityexample: en-us
       - bearerLanguageCollection:
[ ]       summarytype: Listobject
languages       descriptionrequired:
|         Returns a collection of languages used in Globalese.- data
        - Ameta
translation API key can also be usedproperties:
for authentication.       parametersdata:
        -  $reftype: '#/components/parameters/languageUsage'array
         - $refitems: '#/components/parameters/limit'
           - $ref: '#/components/parametersschemas/offsetLanguage'
      responses:  meta:
      200:    $ref: '#/components/schemas/CollectionMetadata'
     descriptionnullableEngineId:
OK      description: Engine ID
  content:    type: integer
       application/jsonnullable: true
      example: 10
     schemanullableEngineVersion:
      description: Engine version
       $reftype: '#/components/schemas/LanguageCollection'integer
        401nullable: true
         $refexample: '#/components/responses/401Unauthorized'4
        500nullableStockEngineId:
          $ref: '#/components/responses/500InternalServerError'
  /segment-translation-dispatchers:
    get:description: Stock engine ID
      tagsnullable: true
      type: -integer
Segment translation dispatchers    example: 23
 security:   nullableStockEngineUuid:
     - bearerdescription: Stock [engine ]UUID
      summarynullable: Listtrue
segment translation dispatchers    type: string
 description: |    example: 77d3a117-43bd-401c-ab8b-75552118b2c5
   Required permissionsnullableTimestamp:
`MANAGE_ENGINES|SYSTEM_ADMINISTRATOR`       responsestype: string
       200nullable: true
         description: OKexample: "2020-06-06T10:45:00+00:00"
    numericalId:
      contentdescription: ID
      type: integer
    application/json:  example: 10
    Project:
      schematype: object
      required:
        $ref: '#/components/schemas/RemoteDispatcherCollection'- id
        401:- actions
        - $ref: '#/components/responses/401Unauthorized'engine_id
        - 403:engine_version
          $ref: '#/components/responses/403Forbidden'- group_id
        - 500:name
        - source_language
$ref: '#/components/responses/500InternalServerError'       - status
502:        - stock_engine_id
 $ref: '#/components/responses/502BadGateway' components:   parameters:  - stock_engine_uuid
 engineIds:       name:- enginetarget_idslanguage
        in:- querytimestamps
      descriptionproperties:
  |      id:
   One or more engine ID(s) for filtering, comma-separated.
 $ref: '#/components/schemas/projectId'
        Examplesactions:
`1`, `1,3,5`          schema:$ref: '#/components/schemas/ProjectActions'
        oneOfcat:
          - type$ref: integer'#/components/schemas/ProjectCat'
        counts:
 - type: string     groupIds:   $ref: '#/components/schemas/ProjectCounts'
  name: group_ids       inengine_id:
query       description: |  $ref: '#/components/schemas/nullableEngineId'
     One or more group ID(s) for filtering, comma-separated.engine_version:
          $ref: '#/components/schemas/nullableEngineVersion'
 Examples: `1`, `1,3,5`     group_id:
 schema:         oneOf$ref: '#/components/schemas/groupId'
         - typename:
integer           - type: string
      style:  form  example: Project 1
  explode: false     languageUsagesource_language:
      name: usage       in: query$ref: '#/components/schemas/sourceLanguage'
        descriptionstatus:
|         Filter for languages used in Globalese.$ref: '#/components/schemas/ProjectStatus'
        stock_engine_id:
   Optionally, the `:source` or `:target`  modifier mayallOf:
be appended to the parameter value to filter for languages used on the- source or target language side only.$ref: '#/components/schemas/nullableStockEngineUuid'
            - `usage=engines:source` will return a list of languages used as engine source languages.deprecated: true
        stock_engine_uuid:
           `usage=engines` will return a list of languages used as engine languages, either source or target.$ref: '#/components/schemas/nullableStockEngineUuid'
        target_language:
          schema$ref: '#/components/schemas/targetLanguage'
        typetimestamps:
string          enum:$ref: '#/components/schemas/ProjectTimestamps'
    ProjectActions:
      -type: object
 engines     limitdescription: An object describing the actions possible name: limitagainst a project.
      inrequired:
 query       description:- |delete
        Limit- fortranslate
results. *May* be used together with `offset`.  - update
      Examplesproperties:
`25`, `50`       schemadelete:
          type: integerboolean
    limitmax100:    translate:
  name: limit       intype: queryboolean
      description: | update:
       Limit for results. Ittype: cannotboolean
be greater than 100. *May* be used together with `offset`.

  ProjectCat:
      type: object
      Examplesnullable: `25`,true
`50`      description: An object describing Ifthe notlinks provided,to ita willCAT automaticallytool beserver setand to 100project.
      schemarequired:
        type: integer- project
        - numericalIds:server
      nameproperties:
 ids       inproject:
  query        description$ref: |'#/components/schemas/ProjectCatProject'
        server:
One or more ID(s) for filtering, comma-separated.    $ref: '#/components/schemas/ProjectCatServer'
    ExamplesProjectCatProject:
`3`, `3,4`       schematype: object
       typerequired:
string       style: form- id
     explode: false  - name
 offset:     properties:
 name: offset       inid:
query       description: |  oneOf:
      Offset to start query from. **Must** be- usedtype: togetherinteger
with `limit`.          Examples: `50`,- `100`type: string
     schema:     example: 849660f2-d081-4d7f-b266-f526ad073521
  type: integer     sourceLanguagename:
      name: source_language   type: string
  in: query       descriptionexample: |My CAT server project
    ProjectCatServer:
 Source language.    type: object
    Examples: `en`, `fr`required:
      schema:  - id
     type: string  - name
 targetLanguage:       name: target_language- type
      inproperties:
query        descriptionid:
|          type: Targetinteger
language.          Examplesexample: `en`,5
 `fr`       schemaname:
          type: string
  requestBodies:     CreateEngineInstance:   example: My CAT server connection
required: true       contenttype:
        application/json:  $ref: '#/components/schemas/catToolServerType'
    ProjectCollection:
  schema:     type: object
      typerequired:
object        - data
   required:     - meta
      properties:
 - engine_id      data:
        - dispatcher_id type: array
          propertiesitems:
            $ref: '#/components/schemas/Project'
  engine_id:      meta:
          $ref: '#/components/schemas/engineIdCollectionMetadata'
    ProjectCounts:
         dispatcher_idtype: object
      required:
        $ref: '#/components/schemas/dispatcherId'
- files
 responses:     204NoContentproperties:

     description: No Content files:
   400BadRequest:       descriptiontype: Badnumber
Request       content:   example: 5
    application/jsonprojectId:
      description: Project ID
 schema:     type: integer
      $refexample: '#/components/schemas/Error'30
    401UnauthorizedprojectName:
      descriptiontype: Unauthorizedstring
      contentexample: My Project
      application/jsonProjectStatus:
          schematype: string
      enum:
    $ref: '#/components/schemas/Error'    - 403Forbidden:empty
      description: Insufficient permissions- new
     content:   - queued
    application/json:    - started
     schema:   - translated
        $ref: '#/components/schemas/Error'- translating
    404NotFoundProjectTimestamps:
      descriptiontype: Resourceobject
not found     422UnprocessableEntityrequired:
      description:  Unprocessable- entitycreated_at
    500InternalServerError:    - updated_at
 description: Internal server error while processingproperties:
the request       contentcreated_at:
          application/json$ref: '#/components/schemas/createdAt'
         schemaupdated_at:
            $ref: '#/components/schemas/Error'
    502BadGateway:updatedAt'
    remoteCorpusId:
      description: The ID of the corpus on the CAT tool server.
      descriptiononeOf:
Bad Gateway   securitySchemes:    - bearertype: number
        - type: httpstring
      schemeexample: bearer"a6fd0c40-7b5c-48bf-89c2-629417b398cd"
    RemoteDispatcherCollection:
 description: API key   schemastype: object
   CollectionMetadata:   required:
   type: object    - data
 required:         - countsmeta
      properties:
        countsdata:
          type: objectarray
          requireditems:
            - total$ref: '#/components/schemas/RemoteDispatcher'
        meta:
    - filtered     $ref: '#/components/schemas/CollectionMetadata'
    propertiesRemoteDispatcher:
      type: object
      totalrequired:
        - id
        - description:region
The total number of resources in the system, irrespective- ofurl
any filters.       - timestamps
      typeproperties:
integer        id:
          example$ref: 100'#/components/schemas/dispatcherId'
         region:
  filtered:        $ref: '#/components/schemas/dispatcherRegion'
     description: The number ofurl:
resources in the system matching the filters.    $ref: '#/components/schemas/dispatcherUrl'
        timestamps:
type: integer         $ref: '#/components/schemas/RemoteDispatcherTimestamps'
    exampleRemoteDispatcherTimestamps:
 40     createdAttype: object
     description required:
Created timestamp in ISO 8601 format   - created_at
  type: string     - updated_at
example: "2017-08-30T04:34:26+00:00"     dispatcherIdproperties:
      description  created_at:
Segment-based translation dispatcher ID       type: integer$ref: '#/components/schemas/createdAt'
        exampleupdated_at:
1     dispatcherRegion:     $ref:  type: string'#/components/schemas/updatedAt'
    sourceLanguage:
   example: "europe-west1"  description: Source language dispatcherUrl:code
      type: string
      example: "https://dispatcher-europe-west1-ja6vheawuq-ew.a.run.app"en-us
    EngineStockEngine:
      type: object
      required:
        - id
        - groupsource_idlanguage
        - instance_ids
        - name
        - sourcetarget_language
        - target_languageversion
        - uuidtimestamps
      properties:
        id:
          $ref: '#/components/schemas/engineIdstockEngineId'
        groupsource_idlanguage:
          $ref: '#/components/schemas/groupIdsourceLanguage'
        instance_ids:
          typetarget_language:
array           items:
            $ref: '#/components/schemas/numericalIdtargetLanguage'
        nameversion:
          type: string
          example: Engine 4.1.0
        source_languagetimestamps:
          $ref: '#/components/schemas/sourceLanguageStockEngineTimestamps'
        target_languagestockEngineId:
          $refdescription: '#/components/schemas/targetLanguage'
 Stock engine ID
      uuidtype: integer
         $refexample: '#/components/schemas/engineUuid'5
    EngineCollectionStockEngineTimestamps:
      type: object
      required:
        - datacreated_at
        - meta
      properties:
        datacreated_at:
          type$ref: array'#/components/schemas/createdAt'
          items:
 updated_at:
          $ref: '#/components/schemas/EngineupdatedAt'
    targetLanguage:
   meta   description: Target language code
      type: string
  $ref    example: '#/components/schemas/CollectionMetadata'it
    engineIdtimestamp:
      description: Engine ID Timestamp in ISO 8601 format
      type: integerstring
      example: 10"2020-06-06T10:45:00+00:00"
    EngineInstanceTrainingJob:
      type: object
      required:
        - id
        - engine_id
        - dispatcher_urlpercentage
        - statustimestamps
      properties:
        id:
          $ref: '#/components/schemas/numericalId'
        engine_id:
          $ref: '#/components/schemas/numericalId'schemas/engineId'
        progress:
          engine_iddescription: Training progress as percentage.
        $ref: '#/components/schemas/engineId'  type: integer
          dispatcher_urlnullable: true
         $ref example: '#/components/schemas/dispatcherUrl'60
        statustimestamps:
          $ref: '#/components/schemas/engineInstanceStatusJobTimestamps'
    EngineInstanceCollectionTrainingJobCollection:
      type: object
      required:
        - data
        - meta
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/EngineInstanceTrainingJob'
        meta:
          $ref: '#/components/schemas/CollectionMetadata'
    engineInstanceStatusTranslationJob:
      type: stringobject
      enumrequired:
        - deployingid
        - error_removal_engine_manager_internal_errorfile_id
        - error_removal_engine_manager_rejected_requestproject_id
        - error_removaltimestamps
      properties:
 - on         - queued
        - removing
    engineUuidid:
      type: string       example: "21cfda50-1944-46fc-901c-04a168ea6fee"
    Error:
  $ref: '#/components/schemas/numericalId'
   type: object    file_id:
  properties:         error$ref: '#/components/schemas/fileId'
         typeproject_id:
string           example: "Error message."$ref: '#/components/schemas/projectId'
        requiredtimestamps:
        - error  $ref: '#/components/schemas/JobTimestamps'
    GroupTranslationJobCollection:
      type: object
      required:
        - iddata
        - namemeta
      properties:
        iddata:
          $reftype: '#/components/schemas/groupId' array
          nameitems:
          type: string $ref: '#/components/schemas/TranslationJob'
        examplemeta:
Default     GroupCollection:       type$ref: object'#/components/schemas/CollectionMetadata'
      requiredUpdateCorpus:
      type: object
- data       properties:
        dataname:
          type$ref: array'#/components/schemas/corpusName'
          itemsgroup_ids:
            $ref: '#/components/schemas/Group'
    groupId:
  corpusGroupIds'
   description: Group ID   metadata:
   type: integer       example$ref: 2'#/components/schemas/CorpusMetadata'
    LanguageUpdateCorpusContent:
      type: object
      required:
        - idfile
      properties:
        idfile:
          type: stringobject
    updatedAt:
      exampledescription: en-usUpdated timestamp in ISO 8601 LanguageCollection:format
      type: objectstring
      requirednullable: true
      example: - data
        - meta"2017-08-30T04:34:26+00:00"
       propertiesUpdateProject:
        datatype: object
         typeproperties:
array           itemsname:
            $ref: '#/components/schemas/LanguageprojectName'
        metaengine_id:
          $ref: '#/components/schemas/CollectionMetadatanullableEngineId'
    numericalId:       descriptionengine_version:
ID       type: integer       example: 10$ref: '#/components/schemas/nullableEngineVersion'
    RemoteDispatcherCollection:       type: object
      required:
 stock_engine_id:
      - data   $ref: '#/components/schemas/nullableStockEngineId'
    -UpdateEngine:
meta       propertiestype: object
       dataproperties:
          typename:
array           itemstype: string
          example: $ref: '#/components/schemas/RemoteDispatcher'Engine 1
        metanote:
          $ref: '#/components/schemas/CollectionMetadataengineEventNote'
    RemoteDispatcher:    published:
  type: object       requiredtype: boolean
       - id  example: true
     - region  resources:
      - url   $ref: '#/components/schemas/UpdateEngineResources'
    - timestamps
      propertiesUpdateEngineResources:
        idtype: object
         $ref: '#/components/schemas/dispatcherId'properties:
        regioncorpus_ids:
          $ref: '#/components/schemas/dispatcherRegionUpdateEngineResourcesCorpusIds'
        urlstock_corpora:
          $reftype: '#/components/schemas/dispatcherUrl'boolean
          timestampsdescription: Whether or not to use available stock corpora for training $ref: '#/components/schemas/RemoteDispatcherTimestamps'the engine.
    RemoteDispatcherTimestampsUpdateEngineResourcesCorpusIds:
      type: object
      requiredproperties:
        - created_atcore:
          type: array
  - updated_at       propertiesitems:
            created_attype: string
          $refexample: [ '#/components/schemas/createdAt'
'51fc7ea3fa889.b0027797', '54018363fa5c1.044227af' ]
       updated_at auxiliary:
          $reftype: '#/components/schemas/updatedAt' array
      sourceLanguage:    items:
  description: Source language code       type: string
      example: en-us   example:  targetLanguage:
 [ '5b04a7263fa509.77444794', '5b0412363fa5c1.c4354792' ]
    descriptionuserId: Target
language code       type: stringinteger
      example: it5
    updatedAtuserName:
      descriptiontype: string
Updated  timestamp in ISO 8601 formatexample: John Doe
    typeuuid:
string       nullabletype: truestring
      example: "2017-08-30T04:34:26+00:0021cfda50-1944-46fc-901c-04a168ea6fee"