{
  "service": "crowdin",
  "displayName": "Crowdin",
  "categories": [
    "Productivity",
    "Communication"
  ],
  "authTypes": [
    "oauth2",
    "api_key"
  ],
  "auth": [
    {
      "type": "oauth2",
      "authorizationUrl": "https://accounts.crowdin.com/oauth/authorize",
      "tokenUrl": "https://accounts.crowdin.com/oauth/token",
      "scopes": [
        "project.settings",
        "project.source"
      ],
      "tokenEndpointAuthMethod": "client_secret_post"
    },
    {
      "type": "api_key",
      "label": "Personal Access Token",
      "description": "Crowdin personal access token used with the Authorization Bearer header. Create or manage it at https://crowdin.com/settings#api-key.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://crowdin.com",
  "actions": [
    {
      "id": "crowdin.create_branch",
      "service": "crowdin",
      "name": "create_branch",
      "description": "Create a Crowdin project branch.",
      "requiredScopes": [
        "crowdin.source.write"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID to create the branch in."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the new branch."
          },
          "title": {
            "type": "string",
            "description": "The title of the new branch."
          },
          "exportPattern": {
            "type": "string",
            "description": "The export pattern for the branch."
          },
          "priority": {
            "type": "integer",
            "description": "The priority of the branch."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "name"
        ],
        "description": "The input payload for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "branchId": {
            "type": "integer",
            "minimum": 1,
            "description": "The unique identifier of the branch."
          },
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID this branch belongs to."
          },
          "name": {
            "type": "string",
            "description": "The name of the branch."
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "description": "The title of the branch."
              },
              {
                "type": "null"
              }
            ]
          },
          "exportPattern": {
            "anyOf": [
              {
                "type": "string",
                "description": "The export pattern for the branch."
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The priority of the branch."
              },
              {
                "type": "null"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "The timestamp when the branch was created."
          },
          "updatedAt": {
            "type": "string",
            "description": "The timestamp when the branch was last updated."
          }
        },
        "additionalProperties": false,
        "required": [
          "branchId",
          "projectId",
          "name",
          "title",
          "exportPattern",
          "priority",
          "createdAt",
          "updatedAt"
        ],
        "description": "A Crowdin branch summary."
      }
    },
    {
      "id": "crowdin.create_directory",
      "service": "crowdin",
      "name": "create_directory",
      "description": "Create a Crowdin directory.",
      "requiredScopes": [
        "crowdin.source.write"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID to create the directory in."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the new directory."
          },
          "branchId": {
            "type": "integer",
            "minimum": 1,
            "description": "The branch ID to filter or create within."
          },
          "directoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The directory ID to filter or create within."
          },
          "title": {
            "type": "string",
            "description": "The title of the new directory."
          },
          "exportPattern": {
            "type": "string",
            "description": "The export pattern for the directory."
          },
          "priority": {
            "type": "integer",
            "description": "The priority of the directory."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "name"
        ],
        "description": "The input payload for this action. branchId and directoryId cannot both be provided."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "directoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The unique identifier of the directory."
          },
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID this directory belongs to."
          },
          "branchId": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "description": "The branch ID this directory belongs to."
              },
              {
                "type": "null"
              }
            ]
          },
          "parentId": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "description": "The parent directory ID."
              },
              {
                "type": "null"
              }
            ]
          },
          "name": {
            "type": "string",
            "description": "The name of the directory."
          },
          "title": {
            "anyOf": [
              {
                "type": "string",
                "description": "The title of the directory."
              },
              {
                "type": "null"
              }
            ]
          },
          "exportPattern": {
            "anyOf": [
              {
                "type": "string",
                "description": "The export pattern for the directory."
              },
              {
                "type": "null"
              }
            ]
          },
          "priority": {
            "anyOf": [
              {
                "type": "integer",
                "description": "The priority of the directory."
              },
              {
                "type": "null"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "description": "The timestamp when the directory was created."
          },
          "updatedAt": {
            "type": "string",
            "description": "The timestamp when the directory was last updated."
          }
        },
        "additionalProperties": false,
        "required": [
          "directoryId",
          "projectId",
          "branchId",
          "parentId",
          "name",
          "title",
          "exportPattern",
          "priority",
          "createdAt",
          "updatedAt"
        ],
        "description": "A Crowdin directory summary."
      }
    },
    {
      "id": "crowdin.list_branches",
      "service": "crowdin",
      "name": "list_branches",
      "description": "List Crowdin project branches.",
      "requiredScopes": [
        "crowdin.source.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID to list branches for."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of items to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The offset for paginating through results."
          },
          "name": {
            "type": "string",
            "description": "The branch name to filter by."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "The input payload for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "branches": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "branchId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The unique identifier of the branch."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The project ID this branch belongs to."
                },
                "name": {
                  "type": "string",
                  "description": "The name of the branch."
                },
                "title": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The title of the branch."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "exportPattern": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The export pattern for the branch."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "priority": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The priority of the branch."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "type": "string",
                  "description": "The timestamp when the branch was created."
                },
                "updatedAt": {
                  "type": "string",
                  "description": "The timestamp when the branch was last updated."
                }
              },
              "additionalProperties": false,
              "required": [
                "branchId",
                "projectId",
                "name",
                "title",
                "exportPattern",
                "priority",
                "createdAt",
                "updatedAt"
              ],
              "description": "A Crowdin branch summary."
            },
            "description": "The list of branches in the project."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "offset": {
                "type": "integer",
                "minimum": 0,
                "description": "The current offset in the result set."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "description": "The maximum number of items returned per page."
              }
            },
            "additionalProperties": false,
            "required": [
              "offset",
              "limit"
            ],
            "description": "The pagination metadata for a Crowdin list response."
          }
        },
        "additionalProperties": false,
        "required": [
          "branches",
          "pagination"
        ],
        "description": "The output payload for this action."
      }
    },
    {
      "id": "crowdin.list_directories",
      "service": "crowdin",
      "name": "list_directories",
      "description": "List Crowdin directories.",
      "requiredScopes": [
        "crowdin.source.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID to list directories for."
          },
          "branchId": {
            "type": "integer",
            "minimum": 1,
            "description": "The branch ID to filter or create within."
          },
          "directoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The directory ID to filter or create within."
          },
          "filter": {
            "type": "string",
            "description": "The filter string to match directory names."
          },
          "recursion": {
            "type": "boolean",
            "description": "Whether to list directories recursively."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of items to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The offset for paginating through results."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "The input payload for this action. branchId and directoryId cannot both be provided."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "directories": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "directoryId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The unique identifier of the directory."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The project ID this directory belongs to."
                },
                "branchId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The branch ID this directory belongs to."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "parentId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The parent directory ID."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "type": "string",
                  "description": "The name of the directory."
                },
                "title": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The title of the directory."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "exportPattern": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The export pattern for the directory."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "priority": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "description": "The priority of the directory."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "createdAt": {
                  "type": "string",
                  "description": "The timestamp when the directory was created."
                },
                "updatedAt": {
                  "type": "string",
                  "description": "The timestamp when the directory was last updated."
                }
              },
              "additionalProperties": false,
              "required": [
                "directoryId",
                "projectId",
                "branchId",
                "parentId",
                "name",
                "title",
                "exportPattern",
                "priority",
                "createdAt",
                "updatedAt"
              ],
              "description": "A Crowdin directory summary."
            },
            "description": "The list of directories in the project."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "offset": {
                "type": "integer",
                "minimum": 0,
                "description": "The current offset in the result set."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "description": "The maximum number of items returned per page."
              }
            },
            "additionalProperties": false,
            "required": [
              "offset",
              "limit"
            ],
            "description": "The pagination metadata for a Crowdin list response."
          }
        },
        "additionalProperties": false,
        "required": [
          "directories",
          "pagination"
        ],
        "description": "The output payload for this action."
      }
    },
    {
      "id": "crowdin.list_files",
      "service": "crowdin",
      "name": "list_files",
      "description": "List Crowdin source files.",
      "requiredScopes": [
        "crowdin.source.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID to list files for."
          },
          "branchId": {
            "type": "integer",
            "minimum": 1,
            "description": "The branch ID to filter or create within."
          },
          "directoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The directory ID to filter or create within."
          },
          "filter": {
            "type": "string",
            "description": "The filter string to match file names."
          },
          "recursion": {
            "type": "boolean",
            "description": "Whether to list files recursively."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of items to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The offset for paginating through results."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "The input payload for this action. branchId and directoryId cannot both be provided."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "files": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "fileId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The unique identifier of the source file."
                },
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The project ID this file belongs to."
                },
                "branchId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The branch ID this file belongs to."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "directoryId": {
                  "anyOf": [
                    {
                      "type": "integer",
                      "minimum": 1,
                      "description": "The directory ID this file belongs to."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "type": "string",
                  "description": "The name of the source file."
                },
                "title": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The title of the source file."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "context": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The context information for the source file."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "type": {
                  "type": "string",
                  "description": "The file type."
                },
                "path": {
                  "type": "string",
                  "description": "The path of the file within the project."
                },
                "status": {
                  "type": "string",
                  "description": "The current status of the file."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The timestamp when the file was created."
                },
                "updatedAt": {
                  "type": "string",
                  "description": "The timestamp when the file was last updated."
                }
              },
              "additionalProperties": false,
              "required": [
                "fileId",
                "projectId",
                "branchId",
                "directoryId",
                "name",
                "title",
                "context",
                "type",
                "path",
                "status",
                "createdAt",
                "updatedAt"
              ],
              "description": "A Crowdin source file summary."
            },
            "description": "The list of source files in the project."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "offset": {
                "type": "integer",
                "minimum": 0,
                "description": "The current offset in the result set."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "description": "The maximum number of items returned per page."
              }
            },
            "additionalProperties": false,
            "required": [
              "offset",
              "limit"
            ],
            "description": "The pagination metadata for a Crowdin list response."
          }
        },
        "additionalProperties": false,
        "required": [
          "files",
          "pagination"
        ],
        "description": "The output payload for this action."
      }
    },
    {
      "id": "crowdin.list_projects",
      "service": "crowdin",
      "name": "list_projects",
      "description": "List Crowdin projects.",
      "requiredScopes": [
        "crowdin.projects.read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of items to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The offset for paginating through results."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for this action."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "projectId": {
                  "type": "integer",
                  "minimum": 1,
                  "description": "The unique identifier of the project."
                },
                "name": {
                  "type": "string",
                  "description": "The name of the project."
                },
                "identifier": {
                  "type": "string",
                  "description": "The string identifier of the project."
                },
                "sourceLanguageId": {
                  "type": "string",
                  "description": "The source language ID of the project."
                },
                "targetLanguageIds": {
                  "type": "array",
                  "items": {
                    "type": "string",
                    "description": "One target language ID."
                  },
                  "description": "The list of target language IDs for translation."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The timestamp when the project was created."
                },
                "updatedAt": {
                  "type": "string",
                  "description": "The timestamp when the project was last updated."
                }
              },
              "additionalProperties": false,
              "required": [
                "projectId",
                "name",
                "identifier",
                "sourceLanguageId",
                "targetLanguageIds",
                "createdAt",
                "updatedAt"
              ],
              "description": "A Crowdin project summary."
            },
            "description": "The list of Crowdin projects."
          },
          "pagination": {
            "type": "object",
            "properties": {
              "offset": {
                "type": "integer",
                "minimum": 0,
                "description": "The current offset in the result set."
              },
              "limit": {
                "type": "integer",
                "minimum": 1,
                "description": "The maximum number of items returned per page."
              }
            },
            "additionalProperties": false,
            "required": [
              "offset",
              "limit"
            ],
            "description": "The pagination metadata for a Crowdin list response."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects",
          "pagination"
        ],
        "description": "The output payload for this action."
      }
    },
    {
      "id": "crowdin.upload_file",
      "service": "crowdin",
      "name": "upload_file",
      "description": "Upload a source file to Crowdin.",
      "requiredScopes": [
        "crowdin.source.write"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "integer",
            "minimum": 1,
            "description": "The project ID to upload the file to."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The name of the file to upload."
          },
          "contentBase64": {
            "type": "string",
            "minLength": 1,
            "description": "The base64-encoded content of the file."
          },
          "contentType": {
            "type": "string",
            "description": "The MIME type of the file content."
          },
          "branchId": {
            "type": "integer",
            "minimum": 1,
            "description": "The branch ID to filter or create within."
          },
          "directoryId": {
            "type": "integer",
            "minimum": 1,
            "description": "The directory ID to filter or create within."
          },
          "title": {
            "type": "string",
            "description": "The title of the source file."
          },
          "context": {
            "type": "string",
            "description": "The context information for the source file."
          },
          "type": {
            "type": "string",
            "description": "The file type identifier."
          },
          "parserVersion": {
            "type": "string",
            "description": "The parser version to use for the file."
          },
          "importOptions": {
            "type": "object",
            "additionalProperties": {
              "description": "One import option value."
            },
            "description": "The import options for the file."
          },
          "exportOptions": {
            "type": "object",
            "additionalProperties": {
              "description": "One export option value."
            },
            "description": "The export options for the file."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId",
          "name",
          "contentBase64"
        ],
        "description": "The input payload for this action. branchId and directoryId cannot both be provided."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "storageId": {
            "type": "integer",
            "minimum": 1,
            "description": "The storage ID of the uploaded file."
          },
          "file": {
            "type": "object",
            "properties": {
              "fileId": {
                "type": "integer",
                "minimum": 1,
                "description": "The unique identifier of the source file."
              },
              "projectId": {
                "type": "integer",
                "minimum": 1,
                "description": "The project ID this file belongs to."
              },
              "branchId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The branch ID this file belongs to."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "directoryId": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The directory ID this file belongs to."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "name": {
                "type": "string",
                "description": "The name of the source file."
              },
              "title": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The title of the source file."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "context": {
                "anyOf": [
                  {
                    "type": "string",
                    "description": "The context information for the source file."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "type": {
                "type": "string",
                "description": "The file type."
              },
              "path": {
                "type": "string",
                "description": "The path of the file within the project."
              },
              "status": {
                "type": "string",
                "description": "The current status of the file."
              },
              "createdAt": {
                "type": "string",
                "description": "The timestamp when the file was created."
              },
              "updatedAt": {
                "type": "string",
                "description": "The timestamp when the file was last updated."
              }
            },
            "additionalProperties": false,
            "required": [
              "fileId",
              "projectId",
              "branchId",
              "directoryId",
              "name",
              "title",
              "context",
              "type",
              "path",
              "status",
              "createdAt",
              "updatedAt"
            ],
            "description": "A Crowdin source file summary."
          }
        },
        "additionalProperties": false,
        "required": [
          "storageId",
          "file"
        ],
        "description": "The output payload for this action."
      }
    }
  ]
}
