openapi: 3.0.0
info:
  title: 'Crowdin API v1'
  description: "(Unofficial) OpenAPI schema for the v1 Crowdin API."
  version: ''
paths:

  '/api/project/{project}/add-directory':
    post:
      summary: 'Add a directory to your project.' 
      operationId: api.projects.directories.add
      externalDocs:
        url: 'https://support.crowdin.com/api/add-directory/'
      responses:
        '200':
          description: 'Added a directory to your project.'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: key
          in: query
          required: true
        -
          name: name
          description: Directory name (with path if nested directory should be created).
          in: query
          required: true
        -
          name: recursive
          description: Create directories recursively if a nested name is provided. Default is false
          in: query

  '/api/project/{project}/delete-directory':
    post:
      summary: Delete a Crowdin project directory. All nested files and directories will be deleted too.
      operationId: api.projects.directories.delete
      externalDocs:
        url: 'https://support.crowdin.com/api/delete-directory/'
      responses:
        '200':
          description: 'Deleted directory.'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: name
          in: query
          required: true
          description: Path to the directory to delete
        -
          name: branch
          in: query
          description: Name of the related version branch.

  '/api/project/{project}/add-file':
    post:
      summary: 'Add one or many files to your project.'
      operationId: api.projects.files.add
      externalDocs:
        url: 'https://support.crowdin.com/api/add-file/'
      responses:
        '200':
          description: 'Added file(s) to your project.'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: key
          in: query
          required: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - files
              properties:
                files:
                  description: 'Filenames to include'
                  type: object

  '/api/project/{project}/update-file':
    post:
      summary: 'Update one or many files in your project.'
      operationId: api.projects.files.update
      externalDocs:
        url: 'https://support.crowdin.com/api/update-file/'
      responses:
        '200':
          description: 'Updated file(s) in your project.'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: key
          in: query
          required: true
      requestBody:
        content:
          application/json:
            schema:
              required:
                - files
              properties:
                files:
                  description: 'Filenames to include'
                  type: object

  '/api/project/{project}/export-file':
    get:
      summary: 'Export a single translated file from your project.'
      operationId: api.projects.files.export
      externalDocs:
        url: 'https://support.crowdin.com/api/export-file/'
      responses:
        '200':
          description: 'Exported file.'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: file
          in: query
          required: true
          description: The path to the file that should be exported from the project.
        -
          name: language
          in: query
          required: true
          description: "Crowdin language code. See https://support.crowdin.com/api/language-codes/"
        -
          name: branch
          in: query
          description: "The name of the related version branch. See https://support.crowdin.com/versions-management/"
        -
          name: format
          in: query
          description: "Specify `xliff` to export file in the XLIFF file format."

  '/api/project/{project}/info':
    post:
      summary: 'Get project details.'
      operationId: api.projects.getDetails
      externalDocs:
        url: 'https://support.crowdin.com/api/info/'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: key
          in: query
          required: true
      responses:
        '200':
          description: 'Got project details.'

  '/api/project/{project}/status':
    post:
      summary: 'Get overall translation and proofreading progresses of each target language.'
      operationId: api.projects.getTranslationStatus
      externalDocs:
        url: 'https://support.crowdin.com/api/status/'
      parameters:
        -
          name: project
          in: path
          required: true
        -
          name: key
          in: query
          required: true
      responses:
        '200':
          description: 'Got project translation status.'

