openapi: 3.1.0 info: title: Crowdin REST API v2 description: | Crowdin localization platform REST API v2 for managing projects, files, source strings, string translations, glossaries, screenshots, and webhooks. Endpoint inventory drawn from https://support.crowdin.com/developer/api/v2/. Enterprise customers can use a per-tenant base URL like https://{domain}.api.crowdin.com/api/v2. version: "2.0" contact: name: Crowdin Developers url: https://support.crowdin.com/developer/api/v2/ servers: - url: https://api.crowdin.com/api/v2 description: Production components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: PAT description: Personal Access Token or OAuth 2 bearer token security: - BearerAuth: [] paths: /projects: get: summary: List projects operationId: listProjects tags: [Projects] parameters: - in: query name: limit schema: { type: integer } - in: query name: offset schema: { type: integer } responses: "200": { description: Projects } post: summary: Add project operationId: addProject tags: [Projects] requestBody: required: true content: application/json: schema: type: object properties: name: { type: string } sourceLanguageId: { type: string } targetLanguageIds: type: array items: { type: string } responses: "201": { description: Created } /projects/{projectId}: get: summary: Get project operationId: getProject tags: [Projects] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "200": { description: Project } patch: summary: Edit project operationId: editProject tags: [Projects] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "200": { description: Updated } delete: summary: Delete project operationId: deleteProject tags: [Projects] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "204": { description: Deleted } /projects/{projectId}/files: get: summary: List files operationId: listFiles tags: [Files] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "200": { description: Files } post: summary: Add file operationId: addFile tags: [Files] parameters: - in: path name: projectId required: true schema: { type: integer } requestBody: required: true content: application/json: schema: type: object properties: storageId: { type: integer } name: { type: string } responses: "201": { description: Created } /projects/{projectId}/files/{fileId}: get: summary: Get file operationId: getFile tags: [Files] parameters: - in: path name: projectId required: true schema: { type: integer } - in: path name: fileId required: true schema: { type: integer } responses: "200": { description: File } delete: summary: Delete file operationId: deleteFile tags: [Files] parameters: - in: path name: projectId required: true schema: { type: integer } - in: path name: fileId required: true schema: { type: integer } responses: "204": { description: Deleted } /projects/{projectId}/strings: get: summary: List source strings operationId: listSourceStrings tags: [SourceStrings] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "200": { description: Strings } post: summary: Add source string operationId: addSourceString tags: [SourceStrings] parameters: - in: path name: projectId required: true schema: { type: integer } requestBody: required: true content: application/json: schema: type: object properties: text: { type: string } identifier: { type: string } fileId: { type: integer } responses: "201": { description: Created } /projects/{projectId}/strings/{stringId}: get: summary: Get source string operationId: getSourceString tags: [SourceStrings] parameters: - in: path name: projectId required: true schema: { type: integer } - in: path name: stringId required: true schema: { type: integer } responses: "200": { description: String } delete: summary: Delete source string operationId: deleteSourceString tags: [SourceStrings] parameters: - in: path name: projectId required: true schema: { type: integer } - in: path name: stringId required: true schema: { type: integer } responses: "204": { description: Deleted } /projects/{projectId}/translations: get: summary: List string translations operationId: listStringTranslations tags: [StringTranslations] parameters: - in: path name: projectId required: true schema: { type: integer } - in: query name: stringId schema: { type: integer } - in: query name: languageId schema: { type: string } responses: "200": { description: Translations } post: summary: Add translation operationId: addTranslation tags: [StringTranslations] parameters: - in: path name: projectId required: true schema: { type: integer } requestBody: required: true content: application/json: schema: type: object properties: stringId: { type: integer } languageId: { type: string } text: { type: string } responses: "201": { description: Created } /projects/{projectId}/screenshots: get: summary: List screenshots operationId: listScreenshots tags: [Screenshots] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "200": { description: Screenshots } post: summary: Add screenshot operationId: addScreenshot tags: [Screenshots] parameters: - in: path name: projectId required: true schema: { type: integer } requestBody: required: true content: application/json: schema: type: object properties: storageId: { type: integer } name: { type: string } responses: "201": { description: Created } /glossaries: get: summary: List glossaries operationId: listGlossaries tags: [Glossaries] responses: "200": { description: Glossaries } post: summary: Add glossary operationId: addGlossary tags: [Glossaries] requestBody: required: true content: application/json: schema: type: object properties: name: { type: string } languageId: { type: string } responses: "201": { description: Created } /glossaries/{glossaryId}: get: summary: Get glossary operationId: getGlossary tags: [Glossaries] parameters: - in: path name: glossaryId required: true schema: { type: integer } responses: "200": { description: Glossary } delete: summary: Delete glossary operationId: deleteGlossary tags: [Glossaries] parameters: - in: path name: glossaryId required: true schema: { type: integer } responses: "204": { description: Deleted } /projects/{projectId}/webhooks: get: summary: List webhooks operationId: listWebhooks tags: [Webhooks] parameters: - in: path name: projectId required: true schema: { type: integer } responses: "200": { description: Webhooks } post: summary: Add webhook operationId: addWebhook tags: [Webhooks] parameters: - in: path name: projectId required: true schema: { type: integer } requestBody: required: true content: application/json: schema: type: object properties: name: { type: string } url: { type: string } events: type: array items: { type: string } responses: "201": { description: Created }