openapi: 3.0.0
info:
  title: 'Crowdin API v2'
  description: "\n# API Overview\nThe Crowdin Enterprise API is a full-featured RESTful API that allows you to create projects in Crowdin, add and update files, download translations, and more to help you easily integrate localization into your development process.\n\n## Requests\nWhen a request is successful, a response will typically be sent back in the form of a JSON object, so the Accept header should be application/json.\n\nFor the methods, where body is accepted (POST/ PATCH/ PUT) the body should be in JSON.  This is done by setting the Content-Type header to application/json. This ensures that your request is interpreted correctly.\n\nRESTful APIs enable you to call individual API endpoints to perform the following actions:\n\n *     GET - retrieve specific information, which may include arrays and sets of data and information.\n *     POST - create/add a new element.\n *     PUT - replace an existing element.\n *     PATCH - update only specified fields of an entity.\n *     DELETE - remove/delete an element.\n\n## Authentication\nThe Crowdin API uses authentication with an account-key and login, that should be passed as an HTTP query string parameter.\n\nTo find your account API key you have to log in to your Crowdin account > Settings > API & SSO. Your login is displayed at the top of your profile settings page.\n```\nExample URL: \"https://your-organization-name.crowdin.com/api/v2/projects/123456/files?login=tomhardy&account-key=007abcd6a7c98e64445192f3bb10da2d\"\n```\nTo get an identifier required for each api method - please use the corresponding methods to retrieve that data.\n\nFor example, to get the project id use [List Projects](#operation/api.projects.getMany) api method. Or copy the numerical is from the project’s URL.\n## File upload\nWith Crowdin API v2 files are first uploaded to the Storage and then uploaded to your project or organization. This approach saves time and is helpful for the methods, that take some time to be completed or might need to be resumed, as well as for the files that should be uploaded to several projects.\n\nFor example, to upload a Translation Memory, please run the following sequence of API methods:\n *     [_Upload a file_](#operation/api.storages.uploadOne) (Storage)\n *     [_Create a file_](#operation/api.projects.files.createOne) (Files)\n\nTo upload files, please add them to Storage first and then use the corresponding API method to upload file from the storage to your organization.\n\nThe same approach is used for several different file types, like source files, screenshots, project cover and logo, Glossaries, and Translation Memories. That’s why such methods would require a Storage id - the id of the file uploaded to the Storage.\n## File download\nFor a more reliable transfer, with Crowdin API v2 file download is completed in several steps. This is also helpful for the methods, that take some time to be completed or might need to be resumed.\n\nFor example, to download a Translation Memory, please run the following sequence of API methods:\n *     [_Start TM export_](#operation/api.tms.exportOne)\n *     [_Get TM export status_](#operation/api.tms.export.getOne) (to check the progress of the export)\n *     [_Get a TM download link_](#operation/api.tms.downloadOne)\n\nThe same approach is used for several different file types, like translations, Translation Memories, Glossaries, and more."
  termsOfService: 'https://support.crowdin.com/terms/'
  contact:
    email: support@crowdin.com
  version: ''
  x-logo:
    url: 'https://support.crowdin.com/assets/logos/crowdin-TranslationManagementService-logo-onecolor.png'
servers:
  -
    url: '{protocol}://{host}/api/v2'
    variables:
      protocol:
        enum:
          - https
          - http
        default: https
      host:
        default: api.crowdin.com
paths:
  '/projects/{projectId}/branches':
    get:
      tags:
        - Branches
      summary: 'List project branches'
      operationId: api.projects.branches.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          name: name
          in: query
          description: 'Filter branch by name.'
          schema:
            type: string
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List project branches'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Branches
      summary: 'Create a branch'
      operationId: api.projects.branches.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BranchCreateForm'
      responses:
        '201':
          description: 'Branch created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/branches/{branchId}':
    get:
      tags:
        - Branches
      summary: 'Get a branch'
      operationId: api.projects.branches.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BranchId'
      responses:
        '200':
          description: 'Branch data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchResource'
        '404':
          description: 'Branch or project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Branches
      summary: 'Delete a branch'
      operationId: api.projects.branches.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BranchId'
      responses:
        '204':
          description: 'Branch was successfully deleted'
        '404':
          description: 'Branch or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Branches
      summary: 'Update a branch'
      operationId: api.projects.branches.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BranchId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Branch successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BranchResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Branch or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/directories':
    get:
      tags:
        - Directories
      summary: 'List project directories'
      operationId: api.projects.directories.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          name: branchId
          in: query
          description: 'Filter directories by branchId'
          schema:
            type: integer
        -
          name: directoryId
          in: query
          description: 'Filter directories by directoryId'
          schema:
            type: integer
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List project directories'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectoryCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Directories
      summary: 'Create a directory'
      operationId: api.projects.directories.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DirectoryCreateForm'
      responses:
        '201':
          description: 'Directory created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectoryResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/directories/{directoryId}':
    get:
      tags:
        - Directories
      summary: 'Get a directory'
      operationId: api.projects.directories.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/DirectoryId'
      responses:
        '200':
          description: 'Directory data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectoryResource'
        '404':
          description: 'Directory or project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Directories
      summary: 'Delete a directory'
      operationId: api.projects.directories.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/DirectoryId'
      responses:
        '204':
          description: 'Directory was successfully deleted'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Directory or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Directories
      summary: 'Update a directory'
      operationId: api.projects.directories.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/DirectoryId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Directory successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DirectoryResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Directory or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/files':
    get:
      tags:
        - Files
      summary: 'List project files'
      operationId: api.projects.files.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          name: branchId
          in: query
          description: "List branch files.\n\n__Note!__ You can either list files for the specified branch (branchId) in the same request."
          schema:
            type: integer
        -
          name: directoryId
          in: query
          description: "List directory files.\n\n__Note!__ You can either list files for the specified directory (directoryId) in the same request."
          schema:
            type: integer
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List project files'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileCollectionResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Files
      summary: 'Create a file'
      operationId: api.projects.files.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          name: branchId
          in: query
          description: 'Get files of branch. You can set branchId or directoryId, not both'
          schema:
            type: integer
        -
          name: directoryId
          in: query
          description: 'Get files of directory. You can set branchId or directoryId, not both'
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FileCreateForm'
      responses:
        '200':
          description: 'File added successful'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/files/{fileId}':
    get:
      tags:
        - Files
      summary: 'Get a file'
      operationId: api.projects.files.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
      responses:
        '200':
          description: 'File data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileResource'
        '404':
          description: 'Project or file with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Files
      summary: 'Delete a file'
      operationId: api.projects.files.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
      responses:
        '204':
          description: 'File was successfully deleted'
        '404':
          description: 'Project or file with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Files
      summary: 'Update a file'
      operationId: api.projects.files.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'File successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project or file with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/files/{fileId}/download':
    get:
      tags:
        - Files
      summary: 'Export file raw'
      operationId: api.projects.files.downloadLink
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
      responses:
        '200':
          description: 'File raw data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadLinkResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project or file with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  /glossaries:
    get:
      tags:
        - Glossaries
      summary: 'List Glossaries'
      operationId: api.glossaries.getMany
      parameters:
        -
          name: groupId
          in: query
          description: 'A unique identifier for the group, this glossary is associated with.'
          required: true
          schema:
            type: integer
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List Glossaries of the specified group'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Group with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Glossaries
      summary: 'Create a Glossary'
      operationId: api.glossaries.createOne
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterpriseGlossaryCreateForm'
      responses:
        '201':
          description: 'Glossary created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Group with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}':
    get:
      tags:
        - Glossaries
      summary: 'Get a Glossary'
      operationId: api.glossaries.getOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
      responses:
        '200':
          description: 'Glossary data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryResource'
        '404':
          description: 'Glossary with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Glossaries
      summary: 'Delete a Glossary'
      operationId: api.glossaries.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
      responses:
        '204':
          description: 'Glossary was successfully deleted'
        '404':
          description: 'Glossary with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Glossaries
      summary: 'Update a Glossary'
      operationId: api.glossaries.patchOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Glossary successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Glossary with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/exports':
    post:
      tags:
        - Glossaries
      summary: 'Start Glossary export'
      operationId: api.glossaries.export.exportOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GlossaryExportForm'
      responses:
        '202':
          description: 'Glossary export accepted successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryExportResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Glossary with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/exports/download':
    get:
      tags:
        - Glossaries
      summary: 'Get a Glossary download link'
      operationId: api.glossaries.export.getDownloadLink
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/GlossaryRawDownloadFormat'
      responses:
        '200':
          description: 'Glossary raw data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadLinkResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Glossary or raw with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/exports/{exportId}':
    get:
      tags:
        - Glossaries
      summary: 'Get Glossary export status'
      operationId: api.glossaries.export.getExportStatus
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/ExportId'
      responses:
        '200':
          description: 'Glossary export data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryExportResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Glossary or job with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/imports':
    post:
      tags:
        - Glossaries
      summary: 'Import a Glossary file'
      operationId: api.glossaries.import.importOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GlossaryImportForm'
      responses:
        '202':
          description: 'Glossary import accepted successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryImportResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Glossary with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/imports/{importId}':
    get:
      tags:
        - Glossaries
      summary: 'Get Glossary import status'
      operationId: api.glossaries.import.getImportOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/ImportId'
      responses:
        '200':
          description: 'Glossary import job data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GlossaryImportResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Glossary or job with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  /groups:
    get:
      tags:
        - Groups
      summary: 'List groups'
      operationId: api.groups.getMany
      parameters:
        -
          $ref: '#/components/parameters/QueryNotRequiredParentId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List groups'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Groups
      summary: 'Create group'
      operationId: api.groups.createOne
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GroupCreateForm'
      responses:
        '201':
          description: 'Group created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/groups/{groupId}':
    get:
      tags:
        - Groups
      summary: 'Get group'
      operationId: api.groups.getOne
      parameters:
        -
          $ref: '#/components/parameters/GroupId'
      responses:
        '200':
          description: 'Group data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupResource'
        '404':
          description: 'Group with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Groups
      summary: 'Delete Group'
      operationId: api.groups.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/GroupId'
      responses:
        '204':
          description: 'Group was successfully deleted'
        '404':
          description: 'Group with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Groups
      summary: 'Update group'
      operationId: api.groups.patchOne
      parameters:
        -
          $ref: '#/components/parameters/GroupId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Group successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GroupResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Group with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/background':
    put:
      tags:
        - 'Projects Settings'
      summary: 'Upload project background'
      operationId: api.projects.images.background.uploadOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BackgroundUploadForm'
      responses:
        '201':
          description: 'Background replaced successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - 'Projects Settings'
      summary: 'Delete project background'
      operationId: api.projects.images.background.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '204':
          description: 'Background was successfully deleted'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/logo':
    put:
      tags:
        - 'Projects Settings'
      summary: 'Upload project logo'
      operationId: api.projects.images.logo.uploadOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LogoUploadForm'
      responses:
        '201':
          description: 'Logo replaced successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - 'Projects Settings'
      summary: 'Delete project logo'
      operationId: api.projects.images.logo.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '204':
          description: 'Logo was successfully deleted'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/issues':
    get:
      tags:
        - Issues
      summary: 'List issues'
      operationId: api.issues.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
        -
          $ref: '#/components/parameters/IssueType'
        -
          $ref: '#/components/parameters/IssueStatus'
      responses:
        '200':
          description: 'List supported languages'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/issues/statistics':
    get:
      tags:
        - Issues
      summary: 'List issue statistics'
      operationId: api.projects.issues.statistics.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
        -
          $ref: '#/components/parameters/IssueStatisticStatus'
        -
          $ref: '#/components/parameters/LanguageIds'
      responses:
        '200':
          description: 'List issue statistics'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/IssueStatisticCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  /languages:
    get:
      tags:
        - Languages
      summary: 'List supported languages'
      operationId: api.languages.getMany
      parameters:
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List supported languages'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LanguageCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/languages/{languageId}':
    get:
      tags:
        - Languages
      summary: 'Get language'
      operationId: api.languages.getOne
      parameters:
        -
          $ref: '#/components/parameters/LanguageId'
      responses:
        '200':
          description: 'Language data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LanguageResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Language with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/pre-translations':
    post:
      tags:
        - Pre-Translation
      summary: 'Pre-translate project files'
      operationId: api.projects.preTranslates.preTranslate
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PreTranslationForm'
      responses:
        '202':
          description: 'Pre-translation accepted successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreTranslationResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/pre-translations/{preTranslationId}':
    get:
      tags:
        - Pre-Translation
      summary: 'Get status of pre-translation'
      operationId: api.projects.preTranslates.getTranslation
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PreTranslationId'
      responses:
        '200':
          description: 'Pre-translation info'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreTranslationResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project or pre-translate with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/storages/{storageId}/preview':
    get:
      tags:
        - Storage
      summary: 'Get preview'
      operationId: api.storages.preview.getOne
      parameters:
        -
          parameter: StorageId
          name: storageId
          in: path
          description: 'A unique identifier for the storage.'
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: 'Preview data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PreviewResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Storage with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '415':
          description: 'Unsupported Media Type'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/branches/{branchId}/languages/progress':
    get:
      tags:
        - Progress
      summary: 'Get branch translation progress'
      operationId: api.projects.branches.languages.progress.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BranchId'
      responses:
        '200':
          description: 'Language Translation progress'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgressCollectionResource'
        '404':
          description: 'Project or branch with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/directories/{directoryId}/languages/progress':
    get:
      tags:
        - Progress
      summary: 'Get directory translation progress'
      operationId: api.projects.directories.languages.progress.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/DirectoryId'
      responses:
        '200':
          description: 'Language Translation progress'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgressCollectionResource'
        '404':
          description: 'Project or directory with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/export-ready-progress':
    get:
      tags:
        - Projects
      summary: 'Get project translations export status'
      operationId: api.projects.exportReadyProgress.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/LanguageIds'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List project translations export status'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgressExportCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/files/{fileId}/languages/progress':
    get:
      tags:
        - Progress
      summary: 'Get file translation progress'
      operationId: api.projects.files.languages.progress.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
      responses:
        '200':
          description: 'Language Translation progress'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgressCollectionResource'
        '404':
          description: 'Project or file with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/languages/progress':
    get:
      tags:
        - Progress
      summary: 'Get project translation progress'
      operationId: api.projects.languages.progress.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: 'Language Translation progress'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProgressCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  /projects:
    get:
      tags:
        - Projects
      summary: 'List projects'
      operationId: api.projects.getMany
      parameters:
        -
          $ref: '#/components/parameters/QueryNotRequiredGroupId'
        -
          $ref: '#/components/parameters/HasManagerAccess'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List projects'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Projects
      summary: 'Create project'
      operationId: api.projects.createOne
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterpriseProjectCreateForm'
      responses:
        '201':
          description: 'Project created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Group with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}':
    get:
      tags:
        - Projects
      summary: 'Get project'
      operationId: api.projects.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: 'Project data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Projects
      summary: 'Delete project'
      operationId: api.projects.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '204':
          description: 'Project was successfully deleted'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Projects
      summary: 'Update project'
      operationId: api.projects.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Project successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/pseudo-translations/builds':
    post:
      tags:
        - Pseudo-Translations
      summary: 'Build pseudo-translation files'
      operationId: api.projects.pseudo.builds.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PseudoExportForm'
      responses:
        '202':
          description: 'Pseudo translation export accepted successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PseudoExportResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/pseudo-translations/builds/{pseudoTranslationBuildId}':
    get:
      tags:
        - Pseudo-Translations
      summary: 'View pseudo-translation build status'
      operationId: api.projects.pseudo.builds.getStatus
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PseudoTranslationBuildId'
      responses:
        '200':
          description: 'Pseudo translation export info'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PseudoExportResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project or export in project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/pseudo-translations/builds/download':
    get:
      tags:
        - Pseudo-Translations
      summary: 'Get pseudo-translation last build download link'
      operationId: api.projects.pseudo.getDownloadLink
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: 'Pseudo translation download link'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadLinkResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project or build with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/qa-check':
    get:
      tags:
        - 'Translation Quality Assurance'
      summary: 'List QA check statistics'
      operationId: api.projects.getQACheck
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
        -
          $ref: '#/components/parameters/LanguageIds'
      responses:
        '200':
          description: 'List QA check statistics'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QaCheckCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/supported-reports':
    get:
      tags:
        - Reports
      summary: 'List supported reports'
      operationId: api.reportTypes.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List supported reports'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportTypeCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/reports':
    post:
      tags:
        - Reports
      summary: 'Generate a report'
      operationId: api.projects.reports.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ReportCreateForm'
      responses:
        '201':
          description: 'Report generated successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/reports/{reportId}/download':
    get:
      tags:
        - Reports
      summary: 'Export project report raw'
      operationId: api.projects.reports.raw.exportOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ReportId'
      responses:
        '200':
          description: 'Report raw data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadLinkResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project or report with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/files/{fileId}/revisions':
    get:
      tags:
        - Files
      summary: 'List file revisions'
      operationId: api.projects.files.revisions.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List file revisions'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevisionCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Files
      summary: 'Create a file revision'
      operationId: api.projects.files.revisions.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RevisionCreateForm'
      responses:
        '200':
          description: 'Revision added successful'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevisionCollectionResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project or file with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/files/{fileId}/revisions/{revision}':
    get:
      tags:
        - Files
      summary: 'Get a file revision'
      operationId: api.projects.files.revisions.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/FileId'
        -
          $ref: '#/components/parameters/Revision'
      responses:
        '200':
          description: 'Information about revision'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RevisionResource'
        '404':
          description: 'Project, file or revision with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/screenshots':
    get:
      tags:
        - Screenshots
      summary: 'List screenshots'
      operationId: api.projects.screenshots.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List screenshots'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreenshotCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Screenshots
      summary: 'Create a screenshot'
      operationId: api.projects.screenshots.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScreenshotCreateForm'
      responses:
        '201':
          description: 'Screenshot created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreenshotResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/screenshots/{screenshotId}':
    get:
      tags:
        - Screenshots
      summary: 'Get a screenshot'
      operationId: api.projects.screenshots.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      responses:
        '200':
          description: 'Screenshot data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreenshotResource'
        '404':
          description: 'Screenshot or project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    put:
      tags:
        - Screenshots
      summary: 'Replace a screenshot'
      operationId: api.projects.screenshots.replaceOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ScreenshotReplaceForm'
      responses:
        '201':
          description: 'Screenshot created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreenshotResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project or screenshot with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Screenshots
      summary: 'Delete a screenshot'
      operationId: api.projects.screenshots.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      responses:
        '204':
          description: 'Screenshot was successfully deleted'
        '404':
          description: 'Screenshot or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Screenshots
      summary: 'Update a screenshot'
      operationId: api.projects.screenshots.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Screenshot successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreenshotResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Screenshot or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/screenshots/{screenshotId}/tags':
    get:
      tags:
        - Screenshots
      summary: 'List screenshot tags'
      operationId: api.projects.screenshots.tags.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List screenshot tags'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Screenshot or Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    put:
      tags:
        - Screenshots
      summary: 'Replace all screenshot tags'
      operationId: api.projects.screenshots.tags.replaceAll
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagCollectionCreateForm'
      responses:
        '200':
          description: 'Screenshots tags were successfully replaced'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Screenshot or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Screenshots
      summary: 'Add a tag'
      operationId: api.projects.screenshots.tags.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TagCollectionCreateForm'
      responses:
        '200':
          description: 'Screenshot tag data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Screenshot or project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Screenshots
      summary: 'Delete all screenshot tags'
      operationId: api.projects.screenshots.tags.deleteAll
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
      responses:
        '204':
          description: 'Screenshots tags were successfully deleted'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Screenshot or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/screenshots/{screenshotId}/tags/{tagId}':
    get:
      tags:
        - Screenshots
      summary: 'Get a tag'
      operationId: api.projects.screenshots.tags.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
        -
          $ref: '#/components/parameters/TagId'
      responses:
        '200':
          description: 'Screenshot tag data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TagResource'
        '404':
          description: 'Tag or screenshot or project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Screenshots
      summary: 'Delete a tag'
      operationId: api.projects.screenshots.tags.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
        -
          $ref: '#/components/parameters/TagId'
      responses:
        '204':
          description: 'Screenshots tag was successfully deleted'
        '404':
          description: 'Tag or screenshot or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Screenshots
      summary: 'Update a tag'
      operationId: api.projects.screenshots.tags.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/ScreenshotId'
        -
          $ref: '#/components/parameters/TagId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Screenshot tag successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ScreenshotResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Tag or screenshot or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/settings':
    get:
      tags:
        - 'Projects Settings'
      summary: 'Get project settings'
      operationId: api.projects.settings.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      responses:
        '200':
          description: 'Settings data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectSettingResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - 'Projects Settings'
      summary: 'Update project settings'
      operationId: api.projects.settings.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Settings successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectSettingResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Branch or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  /storages:
    get:
      tags:
        - Storage
      summary: 'List user storages'
      operationId: api.storages.getAll
      parameters:
        -
          parameter: StorageId
          name: storageId
          in: path
          description: 'A unique identifier for the storage.'
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: 'List user storages'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
    post:
      tags:
        - Storage
      summary: 'Upload a file'
      operationId: api.storages.uploadOne
      parameters:
        -
          $ref: '#/components/parameters/StorageContentTypeHeader'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StorageUpload'
      responses:
        '201':
          description: 'File upload created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
  '/storages/{storageId}':
    get:
      tags:
        - Storage
      summary: 'Get storage'
      operationId: api.storages.getOne
      parameters:
        -
          parameter: StorageId
          name: storageId
          in: path
          description: 'A unique identifier for the storage.'
          required: true
          schema:
            type: integer
      responses:
        '200':
          description: 'Storage data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StorageResource'
        '404':
          description: 'Storage with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Storage
      summary: 'Delete Storage'
      operationId: api.storages.deleteOne
      parameters:
        -
          parameter: StorageId
          name: storageId
          in: path
          description: 'A unique identifier for the storage.'
          required: true
          schema:
            type: integer
      responses:
        '204':
          description: 'Storage was successfully deleted'
        '404':
          description: 'Storage with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/strings':
    get:
      tags:
        - Strings
      summary: 'List project strings'
      operationId: api.projects.pseudo.listProjectStrings
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/QueryFileId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List project strings'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Strings
      summary: 'Create a project string'
      operationId: api.projects.strings.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StringCreateForm'
      responses:
        '201':
          description: 'String was created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project or file with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/strings/{stringId}':
    get:
      tags:
        - Strings
      summary: 'Get a project string'
      operationId: api.projects.strings.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/StringId'
      responses:
        '200':
          description: 'String data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringResource'
        '404':
          description: 'Project or string with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Strings
      summary: 'Delete a project string'
      operationId: api.projects.strings.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/StringId'
      responses:
        '204':
          description: 'String was successfully deleted'
        '404':
          description: 'Project, file or string with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Strings
      summary: 'Update a project string'
      operationId: api.projects.strings.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/StringId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'String successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StringResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project, file or string with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/tasks':
    get:
      tags:
        - Tasks
      summary: 'List tasks'
      operationId: api.projects.tasks.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List tasks'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Tasks
      summary: 'Create a task'
      operationId: api.projects.tasks.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterpriseTaskCreateForm'
      responses:
        '201':
          description: 'Task created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/tasks/{taskId}':
    get:
      tags:
        - Tasks
      summary: 'Get a task'
      operationId: api.projects.tasks.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/TaskId'
      responses:
        '200':
          description: 'Task data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResource'
        '404':
          description: 'Project or task with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Tasks
      summary: 'Delete a task'
      operationId: api.projects.tasks.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/TaskId'
      responses:
        '204':
          description: 'Task was successfully deleted'
        '404':
          description: 'Project or task with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Tasks
      summary: 'Update a task'
      operationId: api.projects.tasks.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/TaskId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Task successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Task or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/tasks/statistics':
    get:
      tags:
        - Tasks
      summary: 'List of task statistic'
      operationId: api.projects.tasks.statistics.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
        -
          $ref: '#/components/parameters/TaskStatisticStatus'
        -
          $ref: '#/components/parameters/LanguageIds'
      responses:
        '200':
          description: 'List of task statistic'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskStatisticCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/terms':
    get:
      tags:
        - Glossaries
      summary: 'List terms'
      operationId: api.glossaries.terms.getMany
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/QueryUserId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List terms'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Glossary with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Glossaries
      summary: 'Create a term'
      operationId: api.glossary.terms.createOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TermCreateForm'
      responses:
        '201':
          description: 'Term created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Glossary with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/glossaries/{glossaryId}/terms/{termId}':
    get:
      tags:
        - Glossaries
      summary: 'Get a term'
      operationId: api.glossaries.terms.getOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/TermId'
      responses:
        '200':
          description: 'Term data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermResource'
        '404':
          description: 'Glossary or term with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Glossaries
      summary: 'Delete a term'
      operationId: api.glossaries.terms.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/TermId'
      responses:
        '204':
          description: 'Term was successfully deleted'
        '404':
          description: 'Glossary or term with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Glossaries
      summary: 'Update a term'
      operationId: api.glossaries.terms.patchOne
      parameters:
        -
          $ref: '#/components/parameters/GlossaryId'
        -
          $ref: '#/components/parameters/TermId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Term successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TermResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Glossary or term with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  /tms:
    get:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'List TMs'
      operationId: api.tms.getList
      parameters:
        -
          $ref: '#/components/parameters/QueryGroupId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List TMs'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Group with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
    post:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Create a TM'
      operationId: api.tms.uploadOne
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnterpriseTmCreateForm'
      responses:
        '202':
          description: 'Tm created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
        '404':
          description: 'Group with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/tms/{tmId}':
    get:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Get a TM'
      operationId: api.tms.getOne
      parameters:
        -
          $ref: '#/components/parameters/TmId'
      responses:
        '200':
          description: 'Tm info'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmResource'
        '404':
          description: 'Group or Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
    delete:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Delete a TM'
      operationId: api.tms.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/TmId'
      responses:
        '204':
          description: 'Tm successfully deleted'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Group or Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
    patch:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Update a TM'
      operationId: api.tms.patchOne
      parameters:
        -
          $ref: '#/components/parameters/TmId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Tm successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Group or Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
  '/tms/{tmId}/exports':
    get:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Get a TM download link'
      operationId: api.tms.downloadOne
      parameters:
        -
          $ref: '#/components/parameters/TmId'
        -
          $ref: '#/components/parameters/SourceLanguageId'
        -
          $ref: '#/components/parameters/TargetLanguageId'
        -
          $ref: '#/components/parameters/Format'
      responses:
        '200':
          description: 'Tm info'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadLinkResource'
        '404':
          description: 'Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
    post:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Start TM export'
      operationId: api.tms.exportOne
      parameters:
        -
          $ref: '#/components/parameters/TmId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TmExportForm'
      responses:
        '200':
          description: 'Created job info'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmExportResource'
        '404':
          description: 'Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
  '/tms/{tmId}/exports/{exportId}':
    get:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Get TM export status'
      operationId: api.tms.export.getOne
      parameters:
        -
          $ref: '#/components/parameters/TmId'
        -
          $ref: '#/components/parameters/ExportId'
      responses:
        '200':
          description: 'Tm info'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmExportResource'
        '404':
          description: 'Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
  '/tms/{tmId}/imports':
    post:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Upload a TM'
      operationId: api.tms.upload
      parameters:
        -
          $ref: '#/components/parameters/TmId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TmUploadForm'
      responses:
        '202':
          description: 'Tm file uploaded successfully, job created. You can use job identifier for checking job status'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmImportResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Group or Tm with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResource'
  '/tms/{tmId}/imports/{importId}':
    get:
      tags:
        - 'Translation Memories (TMs)'
      summary: 'Get TM import status '
      operationId: api.tms.upload.jobByTm
      parameters:
        -
          $ref: '#/components/parameters/TmId'
        -
          $ref: '#/components/parameters/ImportId'
      responses:
        '200':
          description: 'Progress of tm import'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TmImportResource'
        '404':
          description: 'Group, Tm, Import with the specified identifier was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/translations/builds':
    get:
      tags:
        - Translations
      summary: 'List project builds'
      operationId: api.projects.translations.builds.getList
      parameters:
        -
          name: branchId
          in: query
          description: 'Filter builds by branchId'
          schema:
            type: integer
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'Available Project builds list'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationProjectBuildCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Translations
      summary: 'Build transaltions'
      description: 'Build a zip file with the translations, so when you download them, you have the latest ones.'
      operationId: api.projects.translations.builds.init
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranslationCreateBuildForm'
      responses:
        '201':
          description: 'Info for created project build'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationProjectBuildResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project, branch or language with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/translations/builds/{buildId}/download':
    get:
      tags:
        - Translations
      summary: 'Download translations URL'
      description: "Get a link to download a ZIP file with translations. You can choose a specific target language need or download all of them at once.\n\n__Note:__ This method creates a URL to download a ZIP file that was created during the last build. To make sure all the latest translations are included, please use  Init a translation build API method to build the project before downloading."
      operationId: api.projects.translations.builds.getDownloadLink
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BuildId'
      responses:
        '200':
          description: 'Get a URL to download translations'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadLinkResource'
        '202':
          description: 'Project build resource if one is not in finished status'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationProjectBuildResource'
        '404':
          description: 'Project build with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/translations/builds/{buildId}':
    get:
      tags:
        - Translations
      summary: 'Get project build info'
      operationId: api.projects.translations.builds.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BuildId'
      responses:
        '200':
          description: 'Project build'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TranslationProjectBuildResource'
        '404':
          description: 'Project or Project build with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Translations
      summary: 'Cancel project build'
      operationId: api.projects.translations.builds.cancel
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/BuildId'
      responses:
        '204':
          description: 'Build was successfully canceled'
        '404':
          description: 'Project or Project build with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '503':
          description: 'Service Unavailable'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/translations/{languageId}':
    post:
      tags:
        - Translations
      summary: 'Upload translation for a specified language'
      operationId: api.projects.translations.initByLanguage
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/LanguageId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TranslationUploadForm'
      responses:
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/webhooks':
    get:
      tags:
        - Webhooks
      summary: 'List webhooks'
      operationId: api.projects.webhooks.getMany
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/PaginationLimit'
        -
          $ref: '#/components/parameters/PaginationOffset'
      responses:
        '200':
          description: 'List webhooks'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookCollectionResource'
        '400':
          description: 'Request parameters are invalid'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    post:
      tags:
        - Webhooks
      summary: 'Create a webhook'
      operationId: api.projects.webhooks.createOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookCreateForm'
      responses:
        '201':
          description: 'Webhook created successfully'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResource'
        '400':
          description: 'Bad request parameters'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
  '/projects/{projectId}/webhooks/{webhookId}':
    get:
      tags:
        - Webhooks
      summary: 'Get a webhook'
      operationId: api.projects.webhooks.getOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/WebhookId'
      responses:
        '200':
          description: 'Webhook data'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResource'
        '404':
          description: 'Webhook or project with the specified id is not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    delete:
      tags:
        - Webhooks
      summary: 'Delete a webhook'
      operationId: api.projects.webhooks.deleteOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/WebhookId'
      responses:
        '204':
          description: 'Webhook was successfully deleted'
        '404':
          description: 'Webhook or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
    patch:
      tags:
        - Webhooks
      summary: 'Update a webhook'
      operationId: api.projects.webhooks.patchOne
      parameters:
        -
          $ref: '#/components/parameters/ProjectId'
        -
          $ref: '#/components/parameters/WebhookId'
      requestBody:
        description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JsonPatchDocument'
      responses:
        '200':
          description: 'Webhook successfully updated'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResource'
        '400':
          description: 'Invalid Request Body'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorCollectionResource'
        '404':
          description: 'Webhook or project with the specified id was not found'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
        '500':
          description: 'Internal Server Error'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResource'
components:
  schemas:
    BranchCreateForm:
      required:
        - name
      properties:
        name:
          description: 'The name of related version branch (Versions Management).'
          type: string
        title:
          description: 'Branch title to be displayed in Crowdin UI.'
          type: string
        exportPattern:
          description: 'Branch export pattern. Is used to create directory name and path in resulted translations bundle.'
          type: string
        priority:
          description: "Each branch can have a different priority level. Default: normal priority.\n *                 '0' — low priority\n *                 '1' — normal priority\n *                 '2' — high priority"
          type: integer
          enum:
            - 0
            - 1
            - 2
      type: object
    BranchCollectionResource:
      description: 'Branch Collection Resource'
      properties:
        data:
          description: 'Class BranchCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/BranchResource'
        pagination:
          description: 'Class BranchCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    BranchResource:
      description: 'Branch Resource'
      properties:
        data:
          $ref: '#/components/schemas/Branch'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Branch:
      title: Branch
      description: 'Branch Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        name:
          type: string
        title:
          type: string
        exportPattern:
          type: string
        status:
          type: integer
        priority:
          type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    CollectionResource:
      description: 'Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.'
      required:
        - data
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    DownloadLinkResource:
      description: 'Download Link Resource'
      properties:
        data:
          $ref: '#/components/schemas/DownloadLink'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ErrorCollectionResource:
      title: 'Error Collection Resource'
      properties:
        errors:
          description: 'Class ErrorCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/ErrorResource'
      type: object
    ErrorResource:
      title: 'Error Resource'
      properties:
        key:
          type: string
        errors:
          type: array
          items:
            $ref: '#/components/schemas/AttributeError'
      type: object
    AttributeError:
      title: AttributeError
      properties:
        code:
          type: string
        message:
          type: string
      type: object
    ExceptionResource:
      description: 'Exception Resource'
      properties:
        error:
          $ref: '#/components/schemas/Exception'
      type: object
    JobAttributesFieldsSchema:
      title: 'Job Attributes Possible Fields'
      properties:
        columnNumber:
          type: string
      type: object
    JobAttributesSchema:
      title: Attributes
      type: object
      additionalProperties:
        oneOf:
          -
            type: string
          -
            type: integer
          -
            type: boolean
    Resource:
      description: 'Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.'
      required:
        - data
      type: object
    DownloadLink:
      title: 'Download Link'
      description: 'Download Link Response Model'
      properties:
        url:
          type: string
        expireIn:
          type: string
      type: object
    Exception:
      title: Exception
      description: 'Exception Response Model'
      properties:
        message:
          type: string
        code:
          type: integer
      type: object
    Pagination:
      title: Pagination
      description: 'Pagination Response Model'
      properties:
        offset:
          type: integer
        limit:
          type: integer
      type: object
    DirectoryCreateForm:
      required:
        - name
      properties:
        branchId:
          description: 'Branch identifier.'
          type: integer
        parentId:
          description: 'Parent directory identifier.'
          type: integer
        name:
          description: 'The name of the directory.'
          type: string
        title:
          description: 'Directory title to be displayed in Crowdin UI.'
          type: string
        exportPattern:
          description: 'Directory export pattern. Is used to create directory name and path in resulted translations bundle.'
          type: string
        priority:
          description: "Each directory can have a different priority level. Default: normal priority.\n *                  '0' — low priority\n *                  '1' — normal priority\n *                  '2' — high priority"
          type: integer
          enum:
            - 0
            - 1
            - 2
          example: '1'
      type: object
    DirectoryCollectionResource:
      description: 'Directory Collection Resource'
      properties:
        data:
          description: 'Class DirectoryCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/DirectoryResource'
        pagination:
          description: 'Class DirectoryCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    DirectoryResource:
      description: 'Directory Resource'
      properties:
        data:
          $ref: '#/components/schemas/Directory'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Directory:
      title: Directory
      description: 'Directory Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        branchId:
          type: integer
        parentId:
          type: integer
        name:
          type: string
        title:
          type: string
        exportPattern:
          type: string
        status:
          type: integer
        priority:
          type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    ProjectFileType:
      description: "\n *          empty value or 'auto' — Try to detect file type by extension or MIME type\n *          'android' — Android (*.xml)\n *          'macosx' — Mac OS X / iOS (*.strings)\n *          'resx' — .NET, Windows Phone (*.resx)\n *          'properties' — Java (*.properties)\n *          'gettext' — GNU GetText (*.po, *.pot)\n *          'yaml' — Ruby On Rails (*.yaml)\n *          'php' — Hypertext Preprocessor (*.php)\n *          'json' — Generic JSON (*.json)\n *          'xml' — Generic XML (*.xml)\n *          'ini' — Generic INI (*.ini)\n *          'rc' — Windows Resources (*.rc)\n *          'resw' — Windows 8 Metro (*.resw)\n *          'resjson' — Windows 8 Metro (*.resjson)\n *          'qtts' — Nokia Qt (*.ts)\n *          'joomla' — Joomla localizable resources (*.ini)\n *          'chrome' — Google Chrome Extension (*.json)\n *          'dtd' — Mozilla DTD (*.dtd)\n *          'dklang' — Delphi DKLang (*.dklang)\n *          'flex' — Flex (*.properties)\n *          'nsh' — NSIS Installer Resources (*.nsh)\n *          'wxl' — WiX Installer (*.wxl)\n *          'xliff' — XLIFF (*.xliff)\n *          'html' — HTML (*.html, *.htm, *.xhtml, *.xhtm)\n *          'haml' — Haml (*.haml)\n *          'txt' — Plain Text (*.txt)\n *          'csv' — Comma Separated Values (*.csv)\n *          'md' — Markdown (*.md, *.text, *.markdown...)\n *          'flsnp' — MadCap Flare (*.flnsp, .flpgpl .fltoc)\n *          'fm_html' — Jekyll HTML (*.html)\n *          'fm_md' — Jekyll Markdown (*.md)\n *          'mediawiki' — MediaWiki (*.wiki, *.wikitext, *.mediawiki)\n *          'docx' — Microsoft Office, OpenOffice.org Documents, Adobe InDesign Adobe FrameMaker(*.docx, *.dotx, *.odt, *.ott, *.xslx, *.xltx, *.pptx, *.potx, *.ods, *.ots, *.odg, *.otg, *.odp, *.otp, *.imdl, *.mif)\n *          'sbv' — Youtube .sbv (*.sbv)\n *          'vtt' — Video Subtitling and WebVTT (*.vtt)\n *          'srt' — SubRip .srt (*.srt)"
      type: string
      enum:
        - auto
        - android
        - macosx
        - resx
        - properties
        - gettext
        - yaml
        - php
        - json
        - xml
        - ini
        - rc
        - resw
        - resjson
        - qtts
        - joomla
        - chrome
        - dtd
        - dklang
        - flex
        - nsh
        - wxl
        - xliff
        - html
        - haml
        - txt
        - csv
        - md
        - flsnp
        - fm_html
        - fm_md
        - mediawiki
        - docx
        - sbv
        - vtt
        - srt
      example: csv
    SpreadsheetLanguageCodeColumnNumber:
      title: 'Language Code Column Number'
      properties:
        columnNumber:
          description: 'Class FileCreateForm'
          type: integer
      type: object
    SpreadsheetFileImportSchema:
      title: 'Spreadsheet File Import Schema'
      description: '{"identifier":0, "sourcePhrase":1, "en":2, "de":3}'
      properties:
        identifier:
          description: 'Class FileCreateForm'
          type: integer
        sourcePhrase:
          description: 'Class FileCreateForm'
          type: integer
      type: object
      example:
        identifier: 0
        sourcePhrase: 1
        en: 2
        de: 3
      additionalProperties:
        $ref: '#/components/schemas/SpreadsheetLanguageCodeColumnNumber'
    SpreadsheetFileImportOptions:
      title: 'Spreadsheet File Import Options'
      properties:
        firstLineContainsHeader:
          description: 'Class FileCreateForm'
          type: boolean
        importTranslations:
          description: 'Class FileCreateForm'
          type: boolean
        scheme:
          $ref: '#/components/schemas/SpreadsheetFileImportSchema'
      type: object
    XmlFileImportOptions:
      title: 'Xml File Import Options'
      properties:
        translateContent:
          description: 'Class FileCreateForm'
          type: boolean
        translateAttributes:
          description: 'Class FileCreateForm'
          type: boolean
        contentSegmentation:
          description: 'Class FileCreateForm'
          type: boolean
        translatableElements:
          description: 'Class FileCreateForm'
          type: array
          items:
            type: string
            enum:
              - /path/to/node
              - '/path/to/attribute[@attr]'
              - //node
              - '//[@attr]'
              - nodeone/nodetwo
              - /nodeone//nodetwo
              - '//node[@attr]'
      type: object
    GeneralFileExportOptions:
      title: 'General File Export Options'
      properties:
        exportPattern:
          description: 'Class FileCreateForm'
          type: string
      type: object
    PropertyFileExportOptions:
      title: 'Property File Export Options'
      properties:
        escapeQuotes:
          description: 'Class FileCreateForm'
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 3
      type: object
      allOf:
        -
          $ref: '#/components/schemas/GeneralFileExportOptions'
    FileImportOptions:
      title: 'File Import Options'
      type: object
      example:
        firstLineContainsHeader: true
        scheme:
          identifier: 0
          sourcePhrase: 1
          en: 2
          de: 3
      oneOf:
        -
          $ref: '#/components/schemas/SpreadsheetFileImportOptions'
        -
          $ref: '#/components/schemas/XmlFileImportOptions'
    FileExportOptions:
      title: 'File Export Options'
      type: object
      example:
        escapeQuotes: 3
      oneOf:
        -
          $ref: '#/components/schemas/GeneralFileExportOptions'
        -
          $ref: '#/components/schemas/PropertyFileExportOptions'
    FileCreateForm:
      required:
        - storageId
        - name
      properties:
        branchId:
          description: 'Specify the id of the branch where the file should be created.'
          type: integer
        directoryId:
          description: 'Directory Identifier.'
          type: integer
        storageId:
          description: 'A unique identifier for the storage. Storage is where you add files, before they can be added to your organization. [More about Storage](#tag/Storage).'
          type: integer
        name:
          description: 'The name of the file.'
          type: string
        title:
          description: 'Title of the file - can be different from the file name, in a more descriptive manner, as it will be displayed to translators.'
          type: string
        type:
          $ref: '#/components/schemas/ProjectFileType'
        importOptions:
          $ref: '#/components/schemas/FileImportOptions'
        exportOptions:
          $ref: '#/components/schemas/FileExportOptions'
      type: object
    FileCollectionResource:
      description: 'File Collection Resource'
      properties:
        data:
          description: 'Class FileCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/FileResource'
        pagination:
          description: 'Class FileCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    FileResource:
      description: 'File Resource'
      properties:
        data:
          $ref: '#/components/schemas/File'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    File:
      title: 'Project File'
      description: 'Project File Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        branchId:
          type: integer
        directoryId:
          type: integer
        languageId:
          type: integer
        name:
          type: string
        title:
          type: string
        type:
          type: string
        revision:
          type: integer
        status:
          type: integer
        priority:
          type: integer
        attributes:
          properties:
            mimeType:
              type: string
              example: application/xml
            fileSize:
              type: integer
          type: object
        exportPattern:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    EnterpriseGlossaryCreateForm:
      required:
        - name
        - groupId
      properties:
        name:
          description: 'The name of the glossary.'
          type: string
        groupId:
          description: 'If you want to add this glossary to a group - specify the group id, if not - 1 and glossary will be added to your workspace and available for all projects and groups. Default: 1.'
          type: integer
      type: object
    GlossaryExportForm:
      required:
        - storageId
      properties:
        format:
          description: "Export Glossary in one of the supported formats. Default: tbx.\n *             'tbx'\n *             'csv'\n *             'xlsx'"
          type: string
          enum:
            - tbx
            - csv
            - xlsx
      type: object
    GlossaryImportForm:
      required:
        - storageId
      properties:
        storageId:
          description: 'File in TBX, CSV or XLS/XLSX formats.'
          type: integer
        scheme:
          description: "__Note:__ Used only when uploading CSV (or XLS/XLSX) file to define data columns mapping.\n\nAcceptable value is the combination of the following constants (%language_code% is a placeholder for your language code):\n * 'term_{%language_code%}' — Column with terms.\n * description_{%language_code%}' — Column with terms description.\n * 'partOfSpeech_{%language_code%}' — Column with terms part of speech."
          type: object
          example:
            term_en: 0
            description_en: 1
        firstLineContainsHeader:
          description: 'Used when uploading CSV (or XLS/XLSX) files via API. Defines whether first line should be imported or it contains columns headers.'
          type: boolean
      type: object
    GlossaryCollectionResource:
      description: 'Glossary Collection Resource'
      properties:
        data:
          description: 'Class GlossaryCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/GlossaryResource'
        pagination:
          description: 'Class GlossaryCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    GlossaryExportResource:
      description: 'Glossary Export Resource'
      properties:
        data:
          $ref: '#/components/schemas/GlossaryExport'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    GlossaryImportResource:
      description: 'Glossary Import Resource'
      properties:
        data:
          $ref: '#/components/schemas/GlossaryImport'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    GlossaryResource:
      description: 'Glossary Resource'
      properties:
        data:
          $ref: '#/components/schemas/Glossary'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    GlossaryExport:
      description: 'Glossary Export Response Model'
      properties:
        identifier:
          type: string
        status:
          type: string
        progress:
          description: 'in percentages'
          type: integer
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/JobAttributesSchema'
        createdAt:
          type: string
        updatedAt:
          type: string
        startedAt:
          type: string
        finishedAt:
          type: string
        eta:
          type: string
      type: object
    GlossaryImport:
      description: 'Glossary Import Response Model'
      properties:
        identifier:
          type: string
        status:
          type: string
        progress:
          description: 'in percentages'
          type: integer
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/JobAttributesSchema'
        createdAt:
          type: string
        updatedAt:
          type: string
        startedAt:
          type: string
        finishedAt:
          type: string
        eta:
          type: string
      type: object
    Glossary:
      title: Glossary
      description: 'Glossary Response Model'
      properties:
        id:
          type: integer
        name:
          type: string
        groupId:
          type: integer
        userId:
          type: integer
        terms:
          type: integer
        languageIds:
          type: array
          items:
            type: integer
        projectIds:
          type: array
          items:
            type: integer
        createdAt:
          description: 'UTC timezone'
          type: string
          format: date-time
      type: object
    GroupCreateForm:
      required:
        - name
      properties:
        name:
          description: 'The name of the group.'
          type: string
        parentId:
          description: 'Parent group Identifier.'
          type: integer
        description:
          description: 'Group description.'
          type: string
      type: object
    GroupCollectionResource:
      description: 'Group Collection Resource'
      properties:
        data:
          description: 'Class GroupCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/GroupResource'
        pagination:
          description: 'Class GroupCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    GroupResource:
      description: 'Group Resource'
      properties:
        data:
          $ref: '#/components/schemas/Group'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Group:
      title: Group
      description: 'Group Response Model'
      properties:
        id:
          type: integer
        visibility:
          type: integer
        name:
          type: string
        description:
          type: string
        parentId:
          type: integer
        organizationId:
          type: integer
        userId:
          type: integer
        subgroupsCount:
          type: integer
        projectsCount:
          type: integer
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    BackgroundUploadForm:
      required:
        - storageId
      properties:
        storageId:
          description: 'A unique identifier for the storage. Storage is where you add files, before they can be added to your organization. [More about Storage](#tag/Storage).'
          type: integer
      type: object
    LogoUploadForm:
      required:
        - storageId
      properties:
        storageId:
          description: 'A unique identifier for the storage. Storage is where you add files, before they can be added to your organization. [More about Storage](#tag/Storage).'
          type: integer
      type: object
    IssueCollectionResource:
      description: 'Issue Collection Resource'
      properties:
        data:
          description: 'Class IssueCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/IssueResource'
        pagination:
          description: 'Class IssueCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    IssueResource:
      description: 'Issue Resource'
      properties:
        data:
          $ref: '#/components/schemas/Issue'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    IssueStatisticCollectionResource:
      description: 'Issue Statistic Collection Resource'
      properties:
        data:
          description: 'Class IssueStatisticCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/IssueStatisticResource'
        pagination:
          description: 'Class IssueStatisticCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    IssueStatisticResource:
      description: 'Issue Statistic Resource'
      properties:
        data:
          $ref: '#/components/schemas/IssueStatistic'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Issue:
      title: Issue
      description: 'Issue Response Model'
      properties:
        id:
          type: integer
        text:
          type: string
        userId:
          type: integer
        stringId:
          type: integer
        languageId:
          type: integer
        type:
          type: string
        status:
          type: string
        createdAt:
          type: string
          format: date-time
      type: object
    IssueStatistic:
      title: Issue
      description: 'Issue Statistic Response Model'
      properties:
        total:
          type: integer
        languageId:
          type: integer
      type: object
    LanguageCollectionResource:
      description: 'Language Collection Resource'
      properties:
        data:
          description: 'Class LanguageCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/LanguageResource'
        pagination:
          description: 'Class LanguageCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    LanguageResource:
      description: 'Language Resource'
      properties:
        data:
          $ref: '#/components/schemas/Language'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Language:
      title: Language
      description: 'Language Response Model'
      properties:
        id:
          type: integer
        organizationId:
          type: integer
        name:
          type: string
        dialectOf:
          type: integer
        textDirection:
          type: string
          enum:
            - ltr
            - rtl
        internalCode:
          type: string
        editorCode:
          description: '- alias of internal code'
          type: string
        crowdinCode:
          type: string
        code:
          description: 'alias of crowdinCode'
          type: string
        pluralCategoryNames:
          description: 'plural category names'
          type: array
          items:
            type: string
        pluralRules:
          description: 'string with plural rules'
          type: string
        pluralExamples:
          description: 'plural examples array'
          type: array
          items:
            type: string
        iso6391:
          type: string
        twoLettersCode:
          description: 'alias of iso6391 code'
          type: string
        iso6393:
          type: string
        threeLettersCode:
          description: 'alias of iso6393 code'
          type: string
        locale:
          type: string
        androidCode:
          type: string
        osxCode:
          type: string
        osxLocale:
          type: string
      type: object
    PreTranslationForm:
      required:
        - languageIds
        - fileIds
      properties:
        languageIds:
          description: 'Set of languages to which pre-translation should be applied.'
          type: array
          items:
            type: integer
        fileIds:
          description: 'Files array that should be translated.'
          type: array
          items:
            type: integer
        method:
          description: "Defines which method will be used for pre-translation.\n\nAcceptable values are:\n *     'tm' — Pre-translation via Translation Memory\n *     'mt' — Pre-translation via Machine Translation. 'mt' should be used with engineId parameter.\n\nTranslation Memory is used by default."
          type: string
          enum:
            - tm
            - mt
          example: mt
        engineId:
          description: 'Defines Machine Translation engine id.'
          type: integer
        autoApproveOption:
          description: "Defines which translations added by pre-translation via TM should be auto-approved.\n *     'all' — all;\n *     'perfectMatchOnly' — with perfect match;\n *     'exceptAutoSubstituted' — all (skip auto-substituted suggestions);\n *     'none' - no auto approve;\n\nDefault: 'none'."
          type: string
          enum:
            - all
            - exceptAutoSubstituted
            - perfectMatchOnly
            - none
        duplicateTranslations:
          description: 'Adds translations even if the same translation already exists. It works only with TM pre-translation method.'
          type: boolean
        translateUntranslatedOnly:
          description: 'Applies translations for untranslated strings only. It works only with TM pre-translation method.'
          type: boolean
        translateWithPerfectMatchOnly:
          description: 'Pre-translate will be applied only for those strings, that have absolute match in source text and contextual information. It works only with TM pre-translation method.'
          type: boolean
      type: object
    PreTranslationResource:
      description: 'Pre Translation Resource'
      properties:
        data:
          $ref: '#/components/schemas/PreTranslation'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    PreTranslation:
      description: 'Pre Translation Response Model'
      properties:
        identifier:
          type: string
        status:
          type: string
        progress:
          description: 'in percentages'
          type: integer
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/JobAttributesSchema'
        createdAt:
          type: string
        updatedAt:
          type: string
        startedAt:
          type: string
        finishedAt:
          type: string
        eta:
          type: string
      type: object
    PreviewResource:
      description: 'Preview Resource'
      properties:
        data:
          $ref: '#/components/schemas/Preview'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Preview:
      title: Preview
      description: 'Preview Response Model'
      properties:
        dataSource:
          type: array
          items:
            items:
              type: string
      type: object
    ProgressExportCollectionResource:
      description: 'Project Export Ready Collection Resource'
      properties:
        data:
          description: 'Class ProgressCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/ProgressExportResource'
        pagination:
          description: 'Class ProgressCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    ProgressExportResource:
      description: 'Project Export Ready Progress Resource'
      properties:
        data:
          $ref: '#/components/schemas/ProgressExportReady'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ProgressCollectionResource:
      description: 'Language Translation Progress Collection Resource'
      properties:
        data:
          description: 'Class ProgressCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/ProgressResource'
        pagination:
          description: 'Class ProgressCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    ProgressResource:
      description: 'Language Translation Progress Resource'
      properties:
        data:
          $ref: '#/components/schemas/Progress'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ProgressExportReady:
      title: Project
      description: 'Project Export Ready Response Model'
      properties:
        languageId:
          type: integer
        exportReadyProgress:
          type: integer
      type: object
    Progress:
      title: 'Language Translation Progress'
      description: 'Language Translation Progress Response Model'
      properties:
        languageId:
          type: integer
        phrasesCount:
          type: integer
        phrasesTranslatedCount:
          type: integer
        phrasesApprovedCount:
          type: integer
        phrasesTranslatedProgress:
          type: number
          format: float
        phrasesApprovedProgress:
          type: number
          format: float
      type: object
    EnterpriseProjectCreateForm:
      required:
        - name
        - sourceLanguageId
        - groupId
      properties:
        name:
          description: 'The name of the project.'
          type: string
        type:
          description: 'Type ( 0 - files based, 1 - strings based ).'
          type: integer
          enum:
            - 0
            - 1
        groupId:
          description: 'Group id'
          type: integer
        targetLanguageIds:
          description: 'Target Languages.'
          type: array
          items:
            type: integer
        templateId:
          description: 'Workflow template id.'
          type: integer
        vendorId:
          description: 'Use only when you have a vendor in your workflow template. Specify the id of the vendor organization, if the template includes a Vendor step without a specific vendor.'
          type: integer
        mtEngineId:
          description: 'Use only when you have you have a vendor in your workflow template. Specify the id of the Machine Translation engine, if the template includes an MT step without a specific MT engine.'
          type: integer
        sourceLanguageId:
          description: 'Source language id.'
          type: integer
        description:
          description: 'Project description visible to the project members.'
          type: string
      type: object
    ProjectCollectionResource:
      description: 'Project Collection Resource'
      properties:
        data:
          description: 'Class ProjectCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/ProjectResource'
        pagination:
          description: 'Class ProjectCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    ProjectResource:
      description: 'Project Resource'
      properties:
        data:
          $ref: '#/components/schemas/Project'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Project:
      title: Project
      description: 'Project Response Model'
      properties:
        id:
          type: integer
        groupId:
          type: integer
        userId:
          type: integer
        sourceLanguageId:
          type: integer
        targetLanguageIds:
          type: array
          items:
            type: integer
        joinPolicy:
          type: string
        languageAccessPolicy:
          type: string
        type:
          description: '0 - string based, 1 - files based'
          type: integer
        name:
          type: string
        cname:
          type: string
        identifier:
          type: string
        description:
          type: string
        visibility:
          type: string
        logo:
          type: string
        background:
          type: string
        isExternal:
          type: boolean
        externalType:
          description: '''proofread or ''translate'''
          type: string
        advancedWorkflowId:
          type: integer
        hasCrowdsourcing:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    PseudoExportForm:
      properties:
        prefix:
          description: 'Add special characters at the beginning of each string to show where messages have been concatenated together.'
          type: string
        suffix:
          description: 'Add special characters at the end of each string to show where messages have been concatenated together.'
          type: string
        lengthTransformation:
          description: 'Make string larger or shorter. Acceptable values must be from -50 to 100. Default is 0.'
          type: integer
        charTransformation:
          description: 'Transforms characters to other languages. Acceptable values are: asian, european, arabic.'
          type: string
          enum:
            - asian
            - european
            - arabic
      type: object
    PseudoExportResource:
      description: 'Pseudo Export Resource'
      properties:
        data:
          $ref: '#/components/schemas/PseudoExport'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    PseudoExport:
      title: 'Pseudo Export Response Model'
      properties:
        identifier:
          type: string
        status:
          type: string
        progress:
          description: 'in percentages'
          type: integer
        attributes:
          items:
            $ref: '#/components/schemas/JobAttributesSchema'
        createdAt:
          type: string
        updatedAt:
          type: string
        startedAt:
          type: string
        finishedAt:
          type: string
        eta:
          type: string
      type: object
    QaCheckCollectionResource:
      description: 'QaCheck Statistic Collection Resource'
      properties:
        data:
          description: 'Class QaCheckCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/QaCheckResource'
        pagination:
          description: 'Class QaCheckCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    QaCheckResource:
      description: 'QaCheck Resource'
      properties:
        data:
          $ref: '#/components/schemas/QaCheck'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    QaCheck:
      title: 'Translation Quality Assurance'
      description: 'QaCheck Response Model'
      properties:
        total:
          type: integer
        languageId:
          type: integer
      type: object
    ReportCreateForm:
      required:
        - name
        - schema
      properties:
        name:
          description: 'The name of the report.'
          type: string
        schema:
          description: 'First, [get a list of supported reports](#operation/api.reportTypes.getMany). Then copy the schema for the report you need from the response into your current request.'
          type: object
      type: object
    ReportResource:
      description: 'Report Resource'
      properties:
        data:
          $ref: '#/components/schemas/Report'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ReportTypeCollectionResource:
      description: 'Report Type Collection Resource'
      properties:
        data:
          description: 'Class ReportTypeCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/ReportTypeResource'
        pagination:
          description: 'Class ReportTypeCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    ReportTypeResource:
      description: 'Report Type Resource'
      properties:
        data:
          $ref: '#/components/schemas/ReportType'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Report:
      properties:
        name:
          type: string
        reportId:
          type: string
        report:
          type: object
      type: object
    ReportType:
      title: 'Report Type'
      description: 'Report Type Response Model'
      properties:
        name:
          type: string
        schema:
          type: array
          items:
            $ref: '#/components/schemas/ReportParameterFields'
      type: object
    ReportParameterFields:
      title: 'List of report type parameter fields'
      properties:
        name:
          type: string
        type:
          type: string
        description:
          type: string
      type: object
    RevisionCreateForm:
      required:
        - storageId
      properties:
        storageId:
          description: 'A unique identifier for the storage. Storage is where you add files, before they can be added to your organization. [More about Storage](#tag/Storage).'
          type: integer
        scheme:
          description: 'File scheme.'
          $ref: '#/components/schemas/SpreadsheetFileImportSchema'
        firstLineContainsHeader:
          description: 'Define whether the file includes a header in the first row, that should not be imported - true, or skipped - false.'
          type: boolean
        updateOption:
          description: "Update Option\n *      1 - update only\n *      2 - update as unapproved\n *      3 - update as untranslated"
          type: integer
          enum:
            - 1
            - 2
            - 3
        escapeQuotes:
          description: "Defines whether single quote should be escaped by another single quote or backslash in exported translations. Acceptable values are: 0, 1, 2, 3. Default is 3.\n *     0 — Do not escape single quote;\n *     1 — Escape single quote by another single quote;\n *     2 — Escape single quote by backslash;\n *     3 — Escape single quote by another single quote only in strings containing variables ( {0} )"
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 3
      type: object
    RevisionCollectionResource:
      description: 'File Revision Collection Resource'
      properties:
        data:
          description: 'Class RevisionCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/RevisionResource'
        pagination:
          description: 'Class RevisionCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    RevisionResource:
      description: 'File Revision Resource'
      properties:
        data:
          $ref: '#/components/schemas/Revision'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Revision:
      title: Revision
      description: 'Source Revision Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        revision:
          type: integer
        revertTo:
          type: integer
        translationChunks:
          type: integer
        info:
          type: object
        date:
          type: string
          format: date-time
      type: object
    ScreenshotCreateForm:
      required:
        - storageId
        - name
      properties:
        storageId:
          description: "Screenshot storage id. Storage file must be image with the following extensions:\n *      'jpeg'\n *      'jpg'\n *      'png'\n *      'gif'"
          type: integer
        name:
          description: 'The name of the screenshot.'
          type: string
      type: object
    ScreenshotReplaceForm:
      required:
        - storageId
        - name
      properties:
        storageId:
          description: 'Screenshot storage id.'
          type: integer
        name:
          description: 'The name of the screenshot.'
          type: string
      type: object
    TagPositionScheme:
      title: 'Tag position'
      properties:
        x:
          type: integer
        'y':
          type: integer
        width:
          type: integer
        height:
          type: integer
      type: object
      example:
        x: 0
        'y': 0
        width: 0
        height: 0
    TagCollectionCreateForm:
      type: array
      items:
        $ref: '#/components/schemas/TagCreateForm'
    TagCreateForm:
      required:
        - stringId
      properties:
        stringId:
          description: 'String id.'
          type: integer
        position:
          $ref: '#/components/schemas/TagPositionScheme'
      type: object
    ScreenshotCollectionResource:
      description: 'Screenshot Collection Resource'
      properties:
        data:
          description: 'Class ScreenshotCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/ScreenshotResource'
        pagination:
          description: 'Class ScreenshotCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    ScreenshotResource:
      description: 'Screenshot Resource'
      properties:
        data:
          $ref: '#/components/schemas/Screenshot'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    TagCollectionResource:
      description: 'Screenshot tag Collection Resource'
      properties:
        data:
          description: 'Class TagCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/TagResource'
        pagination:
          description: 'Class TagCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    TagResource:
      description: 'Tag Resource'
      properties:
        data:
          $ref: '#/components/schemas/ScreenshotTag'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ScreenshotTagPosition:
      title: Position
      description: 'Position Response Model'
      properties:
        x:
          type: integer
        'y':
          type: integer
        width:
          type: integer
        height:
          type: integer
      type: object
    Screenshot:
      title: Screenshot
      description: 'Screenshot Response Model'
      properties:
        id:
          type: integer
        userId:
          type: integer
        url:
          type: string
        name:
          type: string
        size:
          properties:
            width:
              type: integer
            height:
              type: integer
          type: object
        tagsCount:
          type: integer
        tags:
          type: array
          items:
            $ref: '#/components/schemas/ScreenshotTag'
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    ScreenshotTag:
      title: Tag
      description: 'Tag Response Model'
      properties:
        id:
          type: integer
        screenshotId:
          type: integer
        stringId:
          type: integer
        position:
          $ref: '#/components/schemas/ScreenshotTagPosition'
        createdAt:
          type: string
          format: date-time
      type: object
    ProjectSettingResource:
      description: 'Project Setting Resource'
      properties:
        data:
          $ref: '#/components/schemas/ProjectSetting'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ProjectSetting:
      title: 'Project Setting'
      description: 'Project Setting Response Model'
      properties:
        projectId:
          type: integer
        translateDuplicates:
          type: integer
        isMtAllowed:
          type: boolean
        autoSubstitution:
          type: boolean
        exportTranslatedOnly:
          type: boolean
        exportApprovedOnly:
          type: boolean
        autoTranslateDialects:
          type: boolean
        publicDownloads:
          type: boolean
        useGlobalTm:
          type: boolean
        inContext:
          type: boolean
        pseudoLanguageId:
          type: integer
        qaCheckIsActive:
          type: boolean
        qaCheckCategories:
          properties:
            empty:
              type: boolean
            size:
              type: boolean
            tags:
              type: boolean
            spaces:
              type: boolean
            variables:
              type: boolean
            punctuation:
              type: boolean
            symbolRegister:
              type: boolean
            specialSymbols:
              type: boolean
            wrongTranslation:
              type: boolean
            spellcheck:
              type: boolean
            icu:
              type: boolean
          type: object
      type: object
    StorageUpload:
      description: 'Binary file data.'
      type: string
      example: 'file content. Text of file or any other raw binary data.'
    StorageCollectionResource:
      description: 'Storage Collection Resource'
      properties:
        data:
          description: 'StorageCollectionResource constructor.'
          type: array
          items:
            $ref: '#/components/schemas/StorageResource'
        pagination:
          description: 'StorageCollectionResource constructor.'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    StorageResource:
      description: 'Storage Resource'
      properties:
        data:
          $ref: '#/components/schemas/Storage'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Storage:
      title: Storage
      description: 'Storage Response Model'
      properties:
        id:
          type: integer
      type: object
    StringCreateForm:
      required:
        - identifier
        - text
      properties:
        identifier:
          description: 'A unique identifier of this string (may be used to identify translated text in your application).'
          type: string
        fileId:
          description: 'File id. __Required__ for file based projects.'
          type: integer
        text:
          description: 'The text for translation.'
          type: string
        context:
          description: 'Any contextual information that helps translators better understand the meaning of the source text.'
          type: string
        isHidden:
          description: 'Hide this string from translators or make it visible in the Editor.'
          type: boolean
        type:
          description: 'String type ( 0 - text, 1 - asset, 2 - icu ).'
          type: integer
          enum:
            - 0
            - 1
            - 2
        maxLength:
          description: 'Max. length of the translated text ( 0 - unlimited ).'
          type: integer
      type: object
    StringCollectionResource:
      description: 'String Collection Resource'
      properties:
        data:
          description: 'Class StringCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/StringResource'
        pagination:
          description: 'Class StringCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    StringResource:
      description: 'String Resource'
      properties:
        data:
          $ref: '#/components/schemas/String'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    String:
      title: String
      description: 'String Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        fileId:
          type: integer
        identifier:
          type: string
        text:
          type: string
        type:
          type: integer
        context:
          type: string
        maxLength:
          type: integer
        isHidden:
          type: boolean
        revision:
          type: integer
        hasPlurals:
          type: boolean
        plurals:
          type: object
        isIcu:
          type: boolean
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    EnterpriseTaskAssignee:
      title: 'Task assignee'
      description: 'Task assignee.'
      required:
        - id
      properties:
        id:
          description: 'User id.'
          type: integer
        wordsCount:
          description: 'If the ''splitFiles'' parameter is passed, the files are split between assignees. By passing the ''wordsCount'' parameter, you can specify how many words will be assigned to each task assignee, starting from 1 word.'
          type: integer
      type: object
    EnterpriseTaskCreateForm:
      required:
        - workflowStepId
        - title
        - languageId
        - fileIds
        - type
      properties:
        workflowStepId:
          description: 'Task workflow step id.'
          type: integer
        status:
          description: "Task status:\n * 0 - To do\n * 1 - In progress\n * 2 - Done\n * 3 - Closed\n * 4 - Archived"
          type: integer
          enum:
            - 0
            - 1
            - 2
            - 3
            - 4
        title:
          description: 'Task title.'
          type: string
        description:
          description: 'Task description.'
          type: string
        languageId:
          description: 'Task language id.'
          type: integer
        fileIds:
          description: 'Task file ids.'
          type: array
          items:
            type: integer
        type:
          description: "\n * 0 - translate\n * 1 - proofread"
          type: integer
          enum:
            - 0
            - 1
        splitFiles:
          description: 'Task split files.'
          type: boolean
        assignees:
          type: array
          items:
            $ref: '#/components/schemas/EnterpriseTaskAssignee'
        deadline:
          description: 'Task deadline in UTC.'
          type: string
          format: date-time
          example: '2100-12-31 23:59:59'
        dateFrom:
          description: 'Task date from in UTC.'
          type: string
          format: date-time
          example: '2100-12-31 23:59:59'
        dateTo:
          description: 'Task date to in UTC.'
          type: string
          format: date-time
          example: '2100-12-31 23:59:59'
      type: object
    TaskCollectionResource:
      description: 'Task Collection Resource'
      properties:
        data:
          description: 'Class TaskCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/TaskResource'
        pagination:
          description: 'Class TaskCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    TaskResource:
      description: 'Task Resource'
      properties:
        data:
          $ref: '#/components/schemas/Task'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    TaskStatisticCollectionResource:
      description: 'Task Statistic Collection Resource'
      properties:
        data:
          description: 'Class TaskStatisticCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/TaskStatisticResource'
        pagination:
          description: 'Class TaskStatisticCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    TaskStatisticResource:
      description: 'Task Statistic Resource'
      properties:
        data:
          $ref: '#/components/schemas/TaskStatistic'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    TaskAssignee:
      properties:
        id:
          type: integer
        wordsCount:
          type: integer
      type: object
    TaskProgress:
      properties:
        total:
          type: integer
        done:
          type: integer
        percent:
          type: number
          format: float
      type: object
    Task:
      title: Task
      description: 'Task Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        creatorId:
          type: integer
        type:
          type: integer
        status:
          type: integer
        title:
          type: string
        assignees:
          type: array
          items:
            $ref: '#/components/schemas/TaskAssignee'
        fileIds:
          type: array
          items:
            type: integer
        progress:
          $ref: '#/components/schemas/TaskProgress'
        sourceLanguageId:
          type: integer
        targetLanguageId:
          type: integer
        description:
          type: string
        hash:
          type: string
        translationUrl:
          type: string
        wordsCount:
          type: integer
        filesCount:
          type: integer
        commentsCount:
          type: integer
        deadline:
          description: 'in UTC'
          type: string
          format: date-time
        timeRange:
          type: string
        workflowStepId:
          type: integer
        createdAt:
          description: 'in UTC'
          type: string
          format: date-time
        updatedAt:
          description: 'in UTC'
          type: string
          format: date-time
      type: object
    TaskStatistic:
      title: 'Task Statistic'
      description: 'Task Statistic Response Model'
      properties:
        total:
          type: integer
        languageId:
          type: integer
      type: object
    TermCreateForm:
      required:
        - languageId
        - text
      properties:
        languageId:
          description: 'Term language id.'
          type: integer
        text:
          description: 'The term itself.'
          type: string
        description:
          description: 'Term description.'
          type: string
        partOfSpeech:
          description: 'Term part of speech.'
          type: string
          enum:
            - adjective
            - adposition
            - adverb
            - auxiliary
            - 'coordinating conjunction'
            - determiner
            - interjection
            - noun
            - numeral
            - particle
            - pronoun
            - 'proper noun'
            - 'subordinating conjunction'
            - verb
            - other
      type: object
    TermCollectionResource:
      description: 'Term Collection Resource'
      properties:
        data:
          description: 'Class TermCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/TermResource'
        pagination:
          description: 'Class TermCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    TermResource:
      description: 'Term Resource'
      properties:
        data:
          $ref: '#/components/schemas/Term'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Term:
      title: Term
      description: 'Term Response Model'
      properties:
        id:
          type: integer
        userId:
          type: integer
        glossaryId:
          type: integer
        languageId:
          type: integer
        text:
          type: string
        description:
          type: string
        partOfSpeech:
          type: string
        lemma:
          type: string
        createdAt:
          description: 'UTC timezone'
          type: string
          format: date-time
        updatedAt:
          description: 'UTC timezone'
          type: string
          format: date-time
      type: object
    EnterpriseTmCreateForm:
      required:
        - name
        - groupId
      properties:
        name:
          description: 'The name of the Translation Memory.'
          type: string
        groupId:
          description: 'Add Translation Memory to a group, by specifying the group id or add this TM on an organization level (will be available for all projects and groups) - 0.'
          type: integer
      type: object
    TmExportForm:
      properties:
        sourceLanguageId:
          description: 'Defines a source language in the language pair.'
          type: integer
        targetLanguageId:
          description: 'Defines a target language in the language pair.'
          type: integer
        format:
          description: 'Defines the format of TMs file. Default is tmx.'
          type: string
          enum:
            - tmx
            - csv
            - xlsx
      type: object
    TmLanguageCodeColumnCode:
      properties:
        columnNumber:
          type: integer
      type: object
    TmLanguageScheme:
      title: 'Tm Schema'
      description: "Note: Used only when uploading CSV (or XLS/XLSX) file to define data columns mapping.\nAcceptable value is the associative array with combination of the column code and column number ({LangCode} is a placeholder for your language crowdin code, {columnNumber} - column  number from 0)."
      type: object
      example:
        phraseEn: 0
        phraseDe: 1
        phrasePl: 2
        phraseUk: 4
      additionalProperties:
        $ref: '#/components/schemas/TmLanguageCodeColumnCode'
    TmUploadForm:
      required:
        - storageId
      properties:
        storageId:
          description: 'Identifier of file storage (File in TMX, CSV or XLS/XLSX formats. See TMX 1.4b Specification).'
          type: integer
        firstLineContainsHeader:
          description: 'Used when uploading CSV (or XLS/XLSX) files via API. Defines whether first line should be imported or it contains columns headers.'
          type: boolean
        scheme:
          $ref: '#/components/schemas/TmLanguageScheme'
      type: object
    TmCollectionResource:
      description: 'Tm Collection Resource'
      properties:
        data:
          description: 'Class TmCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/TmResource'
        pagination:
          description: 'Class TmCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    TmExportResource:
      description: 'Tm Export Resource'
      properties:
        data:
          $ref: '#/components/schemas/TmExport'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    TmImportResource:
      description: 'Tm Import Resource'
      properties:
        data:
          $ref: '#/components/schemas/TmImport'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    TmResource:
      description: 'Tm Resource'
      properties:
        data:
          $ref: '#/components/schemas/Tm'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    TmExport:
      description: 'Translation Memory Export Response Model'
      properties:
        identifier:
          type: string
        status:
          type: string
        progress:
          description: 'in percentages'
          type: integer
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/JobAttributesSchema'
        createdAt:
          type: string
        updatedAt:
          type: string
        startedAt:
          type: string
        finishedAt:
          type: string
        eta:
          type: string
      type: object
    TmImport:
      description: 'Translation Memory Import Response Model'
      properties:
        identifier:
          type: string
        status:
          type: string
        progress:
          description: 'in percentages'
          type: integer
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/JobAttributesSchema'
        createdAt:
          type: string
        updatedAt:
          type: string
        startedAt:
          type: string
        finishedAt:
          type: string
        eta:
          type: string
      type: object
    Tm:
      title: Tm
      description: 'Translation Memory Response Model'
      properties:
        id:
          type: integer
        groupId:
          type: integer
        name:
          type: string
        languageIds:
          type: array
          items:
            type: integer
        segmentsCount:
          type: integer
        defaultProjectId:
          type: integer
        projectIds:
          type: array
          items:
            type: integer
      type: object
    TranslationCreateBuildForm:
      properties:
        branchId:
          description: 'Branch Identifier.'
          type: integer
        targetLanguagesId:
          description: 'Specify the target languages, that should be built. To build all the target languages - leave this field empty.'
          type: array
          items:
            type: integer
        exportTranslatedOnly:
          description: 'Specify whether only translated files should be exported - true, if all should be exported - false.'
          type: boolean
        exportApprovedOnly:
          description: 'Specify whether only approved ones should be exported - true, if all should be exported - false.'
          type: boolean
      type: object
    TranslationUploadForm:
      required:
        - storageId
        - fileId
      properties:
        storageId:
          description: 'Storage id.'
          type: string
        fileId:
          description: 'The identifier for file for import.'
          type: integer
        importDuplicates:
          description: 'Defines whether to add translation if there is the same translation previously added. Default is false.'
          type: boolean
        importEqSuggestions:
          description: 'Defines whether to add translation if it is equal to source string at Crowdin. Default is false.'
          type: boolean
        autoApproveImported:
          description: 'Mark uploaded translations as approved. Default is false.'
          type: boolean
      type: object
    TranslationProjectBuildCollectionResource:
      description: 'Project Collection Resource'
      properties:
        data:
          description: 'Class TranslationProjectBuildCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/TranslationProjectBuildResource'
        pagination:
          description: 'Class TranslationProjectBuildCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    TranslationProjectBuildResource:
      description: 'Translation Resource'
      properties:
        data:
          $ref: '#/components/schemas/ProjectBuild'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    ProjectBuildProgress:
      title: 'Project build progress'
      properties:
        percent:
          type: integer
        currentLanguageId:
          type: string
        currentFileId:
          type: string
      type: object
    ProjectBuild:
      properties:
        id:
          type: integer
        projectId:
          type: integer
        branchId:
          type: integer
        languagesId:
          type: array
          items:
            type: integer
        status:
          type: string
        progress:
          $ref: '#/components/schemas/ProjectBuildProgress'
      type: object
    WebhookCreateForm:
      required:
        - name
        - url
        - events
        - requestType
      properties:
        name:
          description: 'The name of the webhook.'
          type: string
        url:
          description: 'Webhook url.'
          type: string
        isActive:
          description: 'Webhook is active.'
          type: boolean
        contentType:
          description: 'Webhook content type.'
          type: string
          enum:
            - multipart/form-data
            - application/json
            - application/x-www-form-urlencoded
        events:
          description: "You can configure webhooks for the following events:\n *                  'file.translated' - any of your project files is fully translated.\n *                  'file.approved' - any of your project files is fully reviewed.\n *                  'project.translated' - all the strings in the project are translated.\n *                  'project.approved' - all the strings in the project are reviewed.\n *                  'translation.updated' - final translation of a string is updated (using Replace in suggestions feature).\n *                  'suggestion.added' - a string from the project is translated.\n *                  'suggestion.updated' - a translation for a string in the project is updated (using Replace in suggestions feature).\n *                  'suggestion.deleted' - one of the translations is deleted.\n *                  'suggestion.approved' - a translation for a string is approved.\n *                  'suggestion.disapproved' - an approval for a previously added translation is removed."
          type: array
          items:
            type: string
            enum:
              - file.translated
              - file.approved
              - project.translated
              - project.approved
              - translation.updated
              - suggestion.added
              - suggestion.updated
              - suggestion.deleted
              - suggestion.approved
              - suggestion.disapproved
        headers:
          description: 'Webhook headers.'
          type: object
        requestType:
          description: 'Webhook request type.'
          type: string
          enum:
            - POST
            - GET
        payload:
          description: 'Webhook payload.'
          type: object
      type: object
    WebhookCollectionResource:
      description: 'Webhook Collection Resource'
      properties:
        data:
          description: 'Class WebhookCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/WebhookResource'
        pagination:
          description: 'Class WebhookCollectionResource'
          type: array
          items:
            $ref: '#/components/schemas/Pagination'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/CollectionResource'
    WebhookResource:
      description: 'Webhook Resource'
      properties:
        data:
          $ref: '#/components/schemas/Webhook'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/Resource'
    Webhook:
      title: Webhook
      description: 'Webhook Response Model'
      properties:
        id:
          type: integer
        projectId:
          type: integer
        name:
          type: string
        url:
          type: string
        events:
          type: array
          items:
            type: string
        headers:
          type: object
        payload:
          type: object
        isActive:
          type: boolean
        requestType:
          type: string
        contentType:
          type: string
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      type: object
    JsonPatchDocument:
      description: 'A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>'
      type: array
      items:
        $ref: '#/components/schemas/JsonPatchOperation'
    JsonPatchOperation:
      description: 'A JSON Patch operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4)'
      required:
        - op
        - path
      properties:
        op:
          description: 'Patch operation to perform'
          type: string
          enum:
            - add
            - remove
            - replace
            - move
            - copy
            - test
        path:
          description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>'
          type: string
          format: json-pointer
      type: object
      discriminator:
        propertyName: op
        mapping:
          add: '#/components/schemas/JsonPatchAdd'
          remove: '#/components/schemas/JsonPatchRemove'
          replace: '#/components/schemas/JsonPatchReplace'
          move: '#/components/schemas/JsonPatchMove'
          copy: '#/components/schemas/JsonPatchCopy'
          test: '#/components/schemas/JsonPatchTest'
    JsonPatchAdd:
      description: 'A JSON Patch `Add` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.1)'
      required:
        - value
      properties:
        value:
          $ref: '#/components/schemas/Any'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/JsonPatchOperation'
    JsonPatchRemove:
      description: 'A JSON Patch `Remove` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.2)'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/JsonPatchOperation'
    JsonPatchReplace:
      description: 'A JSON Patch `Replace` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.3)'
      required:
        - value
      properties:
        value:
          $ref: '#/components/schemas/Any'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/JsonPatchOperation'
    JsonPatchMove:
      description: 'A JSON Patch `Move` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.4)'
      required:
        - from
      properties:
        from:
          description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>'
          type: string
          format: json-pointer
      type: object
      allOf:
        -
          $ref: '#/components/schemas/JsonPatchOperation'
    JsonPatchCopy:
      description: 'A JSON Patch `Copy` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.5)'
      required:
        - from
      properties:
        from:
          description: 'A JSON Pointer as defined by <a href="https://tools.ietf.org/html/rfc6901" target="_blank">RFC 6901</a>'
          type: string
          format: json-pointer
      type: object
      allOf:
        -
          $ref: '#/components/schemas/JsonPatchOperation'
    JsonPatchTest:
      description: 'A JSON Patch `Test` operation as defined by [RFC 6902](https://tools.ietf.org/html/rfc6902#section-4.6)'
      required:
        - value
      properties:
        value:
          $ref: '#/components/schemas/Any'
      type: object
      allOf:
        -
          $ref: '#/components/schemas/JsonPatchOperation'
    Any:
      title: Any
      oneOf:
        -
          type: string
        -
          type: boolean
        -
          type: integer
        -
          type: array
          items:
            type: integer
        -
          type: array
          items:
            type: string
  parameters:
    PaginationLimit:
      name: limit
      in: query
      description: 'Maximum number of items to retrieve.'
      schema:
        type: integer
        default: 25
        maximum: 500
        minimum: 1
    PaginationOffset:
      name: offset
      in: query
      description: 'Starting offset in the collection.'
      schema:
        type: integer
        default: 0
        minimum: 0
    QueryGroupId:
      name: groupId
      in: query
      description: 'A unique identifier for the group.'
      required: true
      schema:
        type: integer
    QueryNotRequiredGroupId:
      name: groupId
      in: query
      description: 'Group Identifier'
      schema:
        type: integer
    HasManagerAccess:
      name: hasManagerAccess
      in: query
      description: "Projects with Manager Access\n *          0 - false\n *          1 - true"
      schema:
        type: integer
        default: 0
        enum:
          - 1
          - 0
    QueryNotRequiredParentId:
      name: parentId
      in: query
      description: 'Parent group Identifier'
      schema:
        type: integer
    QueryFileId:
      name: fileId
      in: query
      description: 'File Identifier.'
      schema:
        type: integer
    QueryUserId:
      name: userId
      in: query
      description: 'User Identifier.'
      schema:
        type: integer
    RevisionId:
      name: revisionId
      in: path
      description: 'Revision Identifier.'
      required: true
      schema:
        type: integer
    FileId:
      name: fileId
      in: path
      description: 'File Identifier.'
      required: true
      schema:
        type: integer
    BranchId:
      name: branchId
      in: path
      description: 'Branch Identifier.'
      required: true
      schema:
        type: integer
    LanguageId:
      name: languageId
      in: path
      description: 'Language Identifier.'
      required: true
      schema:
        type: integer
    LanguageIds:
      name: languageIds
      in: query
      description: 'Language identifier for filter.'
      schema:
        type: string
        pattern: '^[\d]+(\,[\d]+)*$'
    ProjectId:
      name: projectId
      in: path
      description: 'Project Identifier.'
      required: true
      schema:
        type: integer
    OrganizationId:
      name: organizationId
      in: path
      description: 'Organization Identifier.'
      required: true
      schema:
        type: integer
    DirectoryId:
      name: directoryId
      in: path
      description: 'Directory Identifier.'
      required: true
      schema:
        type: integer
    SourceId:
      name: sourceId
      in: path
      description: 'Source Identifier.'
      required: true
      schema:
        type: integer
    Revision:
      name: revision
      in: path
      description: 'Revision number.'
      required: true
      schema:
        type: integer
    JobId:
      name: jobId
      in: path
      description: 'Job Identifier.'
      required: true
      schema:
        type: integer
    JobIdentifier:
      name: jobIdentifier
      in: path
      description: 'Job Identifier.'
      required: true
      schema:
        type: string
    StorageId:
      name: storageId
      in: path
      description: 'A unique identifier for the storage. Storage is where you add files, before they can be added to your organization. [More about Storage](#tag/Storage).'
      required: true
      schema:
        type: integer
    GroupId:
      name: groupId
      in: path
      description: 'A unique identifier for the group.'
      required: true
      schema:
        type: integer
    GlossaryId:
      name: glossaryId
      in: path
      description: 'Glossary Identifier.'
      required: true
      schema:
        type: integer
    TaskId:
      name: taskId
      in: path
      description: 'Task Identifier.'
      required: true
      schema:
        type: integer
    TmId:
      name: tmId
      in: path
      description: 'TM Identifier.'
      required: true
      schema:
        type: integer
    BuildId:
      name: buildId
      in: path
      description: 'Project Build Identifier.'
      required: true
      schema:
        type: integer
    PseudoTranslationBuildId:
      name: pseudoTranslationBuildId
      in: path
      description: 'Pseudo Translation Build Identifier, consists of 36 characters.'
      required: true
      schema:
        type: string
    WebhookId:
      name: webhookId
      in: path
      description: 'Webhook Identifier.'
      required: true
      schema:
        type: integer
    StringId:
      name: stringId
      in: path
      description: 'String Identifier.'
      required: true
      schema:
        type: integer
    TermId:
      name: termId
      in: path
      description: 'Term Identifier.'
      required: true
      schema:
        type: integer
    ScreenshotId:
      name: screenshotId
      in: path
      description: 'Screenshot Identifier.'
      required: true
      schema:
        type: integer
    ExportId:
      name: exportId
      in: path
      description: 'Export Identifier, consists of 36 characters.'
      required: true
      schema:
        type: string
    ImportId:
      name: importId
      in: path
      description: 'Import Identifier, consists of 36 characters.'
      required: true
      schema:
        type: string
    PreTranslationId:
      name: preTranslationId
      in: path
      description: 'Pre Translate Identifier.'
      required: true
      schema:
        type: string
    TagId:
      name: tagId
      in: path
      description: 'Screenshot’s tag identifier. Use List screenshots or Get screenshots method to get the tag identifier..'
      required: true
      schema:
        type: integer
    ReportId:
      name: reportId
      in: path
      description: 'Report Identifier, consists of 36 characters'
      required: true
      schema:
        type: string
    GlossaryRawDownloadFormat:
      name: format
      in: query
      description: 'Defines download format. Default is tbx.'
      schema:
        type: string
        enum:
          - tbx
          - csv
          - xlsx
    IssueType:
      name: type
      in: query
      description: 'Defines the issue type.'
      schema:
        type: string
        enum:
          - all
          - general_question
          - translation_mistake
          - context_request
          - source_mistake
    IssueStatus:
      name: status
      in: query
      description: 'Defines the issue resolution status.'
      schema:
        type: string
        enum:
          - all
          - resolved
          - unresolved
    IssueStatisticStatus:
      name: status
      in: query
      description: 'Defines the issue resolution status.'
      schema:
        type: string
        default: all
        enum:
          - resolved
          - unresolved
          - all
    StorageContentTypeHeader:
      name: Content-Type
      in: header
      description: 'File content type'
      required: true
      schema:
        type: string
    TaskStatisticStatus:
      name: status
      in: query
      description: "Defines the task resolution status:\n * 0 - todo\n * 1 - in_progress\n * 2 - done\n * 3 - closed\n * 4 - archived\n * 5 - overdue"
      schema:
        type: integer
        enum:
          - 0
          - 1
          - 2
          - 3
          - 4
          - 5
    SourceLanguageId:
      name: sourceLanguageId
      in: query
      description: 'Defines a source language in the language pair.'
      schema:
        type: integer
    TargetLanguageId:
      name: targetLanguageId
      in: query
      description: 'Defines a target language in the language pair.'
      schema:
        type: integer
    Format:
      name: format
      in: query
      description: 'Defines the format of TMs file. Default is tmx.'
      schema:
        type: string
    TranslationExportProgressBranchId:
      name: branchId
      in: query
      description: 'Defines a branch for built translation.'
      schema:
        type: integer
tags:
  -
    name: Branches
    description: ''
  -
    name: Directories
    description: ''
  -
    name: Files
    description: ''
  -
    name: Glossaries
    description: "\nTo download a Glossary, please run the following sequence of API methods: Start Glossary export > Get Glossary export status (to check the progress of the export) > Get a Glossary download link.\n\nTo upload a Glossary, please run the following sequence of API methods:\n *     [_Upload new file_](#operation/api.storages.uploadOne) (Storage)\n *     _Create a Glossary_\n *     _Import a Glossary file_\n *     _Get Glossary import status_ (to check the progress of the import)"
  -
    name: Groups
    description: ''
  -
    name: 'Projects Settings'
    description: ''
  -
    name: Issues
    description: ''
  -
    name: Languages
    description: ''
  -
    name: Pre-Translation
    description: "\nPre-translate your project files with a Translation Memory or with a Machine Translation engine connected to your project. Once you run Pre-translate project files, please run Get status of pre-translation to check the progress and status."
  -
    name: Progress
    description: ''
  -
    name: Projects
    description: ''
  -
    name: Pseudo-Translations
    description: "\nTo do a Pseudo-translation, please run the following sequence of API methods:\n *     _Build pseudo-translation files_\n *     _View pseudo-translation build status_\n *     _Get pseudo-translation last build download link_"
  -
    name: 'Translation Quality Assurance'
    description: ''
  -
    name: Reports
    description: ''
  -
    name: Screenshots
    description: ''
  -
    name: Strings
    description: ''
  -
    name: Storage
    description: "\nStorage is a space where you upload your files, before adding them to your projects using our API.  This saves time if you have multiple files, as you can upload files once, and then just specify the Storage id in the necessary endpoint and that file will be uploaded.\n\n__Note:__ to upload any files to your projects, they typically should be added to the storage first.\n\nFiles, that should be uploaded into storage first, include screenshots, project cover and logo, source files, Glossaries, and Translation Memories. If the method requires a Storage id - that’s the id for the file uploaded to the Storage.\n\n__Note:__ the storage is periodically cleared. So the files uploaded to storage and not used further will be removed. The files that were uploaded/updated using the storage id would still be removed from the storage but will not be influenced in the organization."
  -
    name: Tasks
    description: ''
  -
    name: 'Translation Memories (TMs)'
    description: "\nTo download a Translation Memory, please run the following sequence of API methods:\n *     _Start TM export_\n *     _Get TM export status_ (to check the progress of the export)\n *     _Get a TM download link_\n\nTo upload a Translation Memory, please run the following sequence of API methods:\n *     [_Upload new file_](#operation/api.storages.uploadOne) (Storage)\n *     _Create a TM_\n *     _Upload a TM_\n *     _Get import info_ (to check the progress of the import)"
  -
    name: Translations
    description: "\nTo download translations, please run the following sequence of API methods:\n *     _Init translations build_\n *     _Get project build info_ /_List project builds_ (to check if the build is completed)\n *     _Download translations URL_"
  -
    name: Webhooks
    description: ''
externalDocs:
  description: 'Find out more about Crowdin API'
  url: 'https://support.crowdin.com/api/api-integration-setup/'
