openapi: 3.1.1 info: title: Weblate's REST addons changes API version: '' x-logo: url: /static/weblate.svg description: "\nThe API is accessible on the ``/api/`` URL and it is based on [Django REST framework](https://www.django-rest-framework.org/).\n\nThe OpenAPI specification is available as feature preview, feedback welcome!\n\n## Authorization\n\n\n\n\n " license: name: GNU General Public License v3 or later url: https://docs.weblate.org/en/latest/contributing/license.html servers: - url: 'http:' description: Weblate tags: - name: changes paths: /api/changes/: get: operationId: api_changes_list description: Return a list of translation changes. parameters: - in: query name: action schema: type: array items: type: integer enum: - 0 - 1 - 100 - 13 - 14 - 15 - 17 - 18 - 19 - 2 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 3 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 4 - 41 - 42 - 43 - 45 - 46 - 47 - 48 - 49 - 5 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 6 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 7 - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - 8 - 80 - 81 - 82 - 83 - 84 - 85 - 86 - 87 - 88 - 89 - 9 - 90 - 91 - 92 - 93 - 94 - 95 - 96 - 97 - 98 - 99 description: '* `0` - Resource updated * `1` - Translation completed * `2` - Translation changed * `3` - Comment added * `4` - Suggestion added * `5` - Translation added * `6` - Automatically translated * `7` - Suggestion accepted * `8` - Translation reverted * `9` - Translation uploaded * `13` - Source string added * `14` - Component locked * `15` - Component unlocked * `17` - Changes committed * `18` - Changes pushed * `19` - Repository reset * `20` - Repository merged * `21` - Repository rebased * `22` - Repository merge failed * `23` - Repository rebase failed * `24` - Parsing failed * `25` - Translation removed * `26` - Suggestion removed * `27` - Translation replaced * `28` - Repository push failed * `29` - Suggestion removed during cleanup * `30` - Source string changed * `31` - String added * `32` - Bulk status changed * `33` - Visibility changed * `34` - User added * `35` - User removed * `36` - Translation approved * `37` - Marked for edit * `38` - Component removed * `39` - Project removed * `41` - Project renamed * `42` - Component renamed * `43` - Moved component * `45` - Contributor joined * `46` - Announcement posted * `47` - Alert triggered * `48` - Language added * `49` - Language requested * `50` - Project created * `51` - Component created * `52` - User invited * `53` - Repository notification received * `54` - Translation replaced file by upload * `55` - License changed * `56` - Contributor license agreement changed * `57` - Screenshot added * `58` - Screenshot uploaded * `59` - String updated in the repository * `60` - Add-on installed * `61` - Add-on configuration changed * `62` - Add-on uninstalled * `63` - String removed * `64` - Comment removed * `65` - Comment resolved * `66` - Explanation updated * `67` - Category removed * `68` - Category renamed * `69` - Category moved * `70` - Saving string failed * `71` - String added in the repository * `72` - String updated in the upload * `73` - String added in the upload * `74` - Translation updated by source upload * `75` - Component translation completed * `76` - Applied enforced check * `77` - Propagated change * `78` - File uploaded * `79` - Extra flags updated * `80` - Font uploaded * `81` - Font changed * `82` - Font removed * `83` - Forced synchronization of translations * `84` - Forced rescan of translations * `85` - Screenshot removed * `86` - Label added * `87` - Label removed * `88` - Repository cleanup * `89` - Source string added in the upload * `90` - Source string added in the repository * `91` - Project backed up * `92` - Project restored * `93` - Component restored * `94` - User edit reverted * `95` - Project setting changed * `96` - Component setting changed * `97` - User access changed * `98` - Workspace created * `99` - Workspace setting changed * `100` - Project moved' explode: true style: form - name: page required: false in: query description: A page number within the paginated result set. schema: type: integer - name: page_size required: false in: query description: Number of results to return per page. schema: type: integer - in: query name: timestamp_after schema: type: string format: date-time - in: query name: timestamp_before schema: type: string format: date-time - in: query name: user schema: type: string tags: - changes security: - tokenAuth: [] - bearerAuth: [] - cookieAuth: [] - {} responses: '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse400' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse401' examples: AuthenticationFailed: value: type: client_error errors: - code: authentication_failed detail: Incorrect authentication credentials. attr: null NotAuthenticated: value: type: client_error errors: - code: not_authenticated detail: Authentication credentials were not provided. attr: null description: '' '403': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse403' examples: PermissionDenied: value: type: client_error errors: - code: permission_denied detail: You do not have permission to perform this action. attr: null description: '' '404': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse404' examples: NotFound: value: type: client_error errors: - code: not_found detail: Not found. attr: null description: '' '405': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse405' examples: MethodNotAllowed: value: type: client_error errors: - code: method_not_allowed detail: Method "get" not allowed. attr: null description: '' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse406' examples: NotAcceptable: value: type: client_error errors: - code: not_acceptable detail: Could not satisfy the request Accept header. attr: null description: '' '423': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse423' description: '' '429': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse429' examples: Throttled: value: type: client_error errors: - code: throttled detail: Request was throttled. attr: null description: '' '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse500' examples: APIException: value: type: server_error errors: - code: error detail: A server error occurred. attr: null description: '' '200': content: application/json: schema: $ref: '#/components/schemas/PaginatedChangeList' description: '' headers: X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' /api/changes/{id}/: get: operationId: api_changes_retrieve description: Return information about a translation change. parameters: - in: path name: id schema: type: string pattern: ^[^/]+$ required: true tags: - changes security: - tokenAuth: [] - bearerAuth: [] - cookieAuth: [] - {} responses: '400': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse400' description: '' '401': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse401' examples: AuthenticationFailed: value: type: client_error errors: - code: authentication_failed detail: Incorrect authentication credentials. attr: null NotAuthenticated: value: type: client_error errors: - code: not_authenticated detail: Authentication credentials were not provided. attr: null description: '' '403': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse403' examples: PermissionDenied: value: type: client_error errors: - code: permission_denied detail: You do not have permission to perform this action. attr: null description: '' '404': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse404' examples: NotFound: value: type: client_error errors: - code: not_found detail: Not found. attr: null description: '' '405': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse405' examples: MethodNotAllowed: value: type: client_error errors: - code: method_not_allowed detail: Method "get" not allowed. attr: null description: '' '406': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse406' examples: NotAcceptable: value: type: client_error errors: - code: not_acceptable detail: Could not satisfy the request Accept header. attr: null description: '' '423': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse423' description: '' '429': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse429' examples: Throttled: value: type: client_error errors: - code: throttled detail: Request was throttled. attr: null description: '' '500': content: application/json: schema: $ref: '#/components/schemas/ErrorResponse500' examples: APIException: value: type: server_error errors: - code: error detail: A server error occurred. attr: null description: '' '200': content: application/json: schema: $ref: '#/components/schemas/Change' description: '' headers: X-RateLimit-Limit: $ref: '#/components/headers/X-RateLimit-Limit' X-RateLimit-Remaining: $ref: '#/components/headers/X-RateLimit-Remaining' X-RateLimit-Reset: $ref: '#/components/headers/X-RateLimit-Reset' components: schemas: ErrorCode405Enum: enum: - method_not_allowed type: string description: '* `method_not_allowed` - Method Not Allowed' Error423: type: object properties: code: $ref: '#/components/schemas/ErrorCode423Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail ErrorResponse403: type: object properties: type: $ref: '#/components/schemas/ClientErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error403' required: - errors - type ErrorResponse404: type: object properties: type: $ref: '#/components/schemas/ClientErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error404' required: - errors - type ErrorCode429Enum: enum: - throttled type: string description: '* `throttled` - Throttled' PaginatedChangeList: type: object required: - count - results properties: count: type: integer example: 123 next: type: string format: uri example: http://api.example.org/accounts/?page=4 previous: type: string format: uri example: http://api.example.org/accounts/?page=2 results: type: array items: $ref: '#/components/schemas/Change' ErrorCode401Enum: enum: - authentication_failed - not_authenticated type: string description: '* `authentication_failed` - Authentication Failed * `not_authenticated` - Not Authenticated' ErrorCode403Enum: enum: - permission_denied type: string description: '* `permission_denied` - Permission Denied' Error429: type: object properties: code: $ref: '#/components/schemas/ErrorCode429Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail Error406: type: object properties: code: $ref: '#/components/schemas/ErrorCode406Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail Error405: type: object properties: code: $ref: '#/components/schemas/ErrorCode405Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail Error400: type: object properties: code: type: string description: Error code. The examples list common validation and parse error codes. examples: - blank - date - datetime - does_not_exist - empty - incorrect_match - incorrect_type - invalid - invalid_choice - invalid_image - invalid_list - make_aware - max_length - max_string_length - max_value - min_value - no_match - no_name - not_a_list - 'null' - null_characters_not_allowed - overflow - parse_error - required - surrogate_characters_not_allowed - unique detail: type: string attr: type: - string - 'null' required: - attr - code - detail Error401: type: object properties: code: $ref: '#/components/schemas/ErrorCode401Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail Change: type: object properties: unit: type: string format: uri readOnly: true component: type: string format: uri readOnly: true translation: type: string format: uri readOnly: true user: type: string format: uri readOnly: true author: type: string format: uri readOnly: true timestamp: type: string format: date-time readOnly: true action: allOf: - $ref: '#/components/schemas/ActionEnum' minimum: -2147483648 maximum: 2147483647 target: type: string old: type: string details: {} id: type: integer readOnly: true action_name: type: string readOnly: true url: type: string format: uri readOnly: true required: - action_name - author - component - id - timestamp - translation - unit - url - user ErrorResponse400TypeEnum: enum: - validation_error - client_error type: string description: '* `validation_error` - Validation Error * `client_error` - Client Error' Error500: type: object properties: code: $ref: '#/components/schemas/ErrorCode500Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail ErrorCode500Enum: enum: - error type: string description: '* `error` - Error' ServerErrorEnum: enum: - server_error type: string description: '* `server_error` - Server Error' Error404: type: object properties: code: $ref: '#/components/schemas/ErrorCode404Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail ErrorCode404Enum: enum: - not_found type: string description: '* `not_found` - Not Found' ErrorResponse500: type: object properties: type: $ref: '#/components/schemas/ServerErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error500' required: - errors - type ActionEnum: enum: - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 13 - 14 - 15 - 17 - 18 - 19 - 20 - 21 - 22 - 23 - 24 - 25 - 26 - 27 - 28 - 29 - 30 - 31 - 32 - 33 - 34 - 35 - 36 - 37 - 38 - 39 - 41 - 42 - 43 - 45 - 46 - 47 - 48 - 49 - 50 - 51 - 52 - 53 - 54 - 55 - 56 - 57 - 58 - 59 - 60 - 61 - 62 - 63 - 64 - 65 - 66 - 67 - 68 - 69 - 70 - 71 - 72 - 73 - 74 - 75 - 76 - 77 - 78 - 79 - 80 - 81 - 82 - 83 - 84 - 85 - 86 - 87 - 88 - 89 - 90 - 91 - 92 - 93 - 94 - 95 - 96 - 97 - 98 - 99 - 100 type: integer description: '* `0` - Resource updated * `1` - Translation completed * `2` - Translation changed * `3` - Comment added * `4` - Suggestion added * `5` - Translation added * `6` - Automatically translated * `7` - Suggestion accepted * `8` - Translation reverted * `9` - Translation uploaded * `13` - Source string added * `14` - Component locked * `15` - Component unlocked * `17` - Changes committed * `18` - Changes pushed * `19` - Repository reset * `20` - Repository merged * `21` - Repository rebased * `22` - Repository merge failed * `23` - Repository rebase failed * `24` - Parsing failed * `25` - Translation removed * `26` - Suggestion removed * `27` - Translation replaced * `28` - Repository push failed * `29` - Suggestion removed during cleanup * `30` - Source string changed * `31` - String added * `32` - Bulk status changed * `33` - Visibility changed * `34` - User added * `35` - User removed * `36` - Translation approved * `37` - Marked for edit * `38` - Component removed * `39` - Project removed * `41` - Project renamed * `42` - Component renamed * `43` - Moved component * `45` - Contributor joined * `46` - Announcement posted * `47` - Alert triggered * `48` - Language added * `49` - Language requested * `50` - Project created * `51` - Component created * `52` - User invited * `53` - Repository notification received * `54` - Translation replaced file by upload * `55` - License changed * `56` - Contributor license agreement changed * `57` - Screenshot added * `58` - Screenshot uploaded * `59` - String updated in the repository * `60` - Add-on installed * `61` - Add-on configuration changed * `62` - Add-on uninstalled * `63` - String removed * `64` - Comment removed * `65` - Comment resolved * `66` - Explanation updated * `67` - Category removed * `68` - Category renamed * `69` - Category moved * `70` - Saving string failed * `71` - String added in the repository * `72` - String updated in the upload * `73` - String added in the upload * `74` - Translation updated by source upload * `75` - Component translation completed * `76` - Applied enforced check * `77` - Propagated change * `78` - File uploaded * `79` - Extra flags updated * `80` - Font uploaded * `81` - Font changed * `82` - Font removed * `83` - Forced synchronization of translations * `84` - Forced rescan of translations * `85` - Screenshot removed * `86` - Label added * `87` - Label removed * `88` - Repository cleanup * `89` - Source string added in the upload * `90` - Source string added in the repository * `91` - Project backed up * `92` - Project restored * `93` - Component restored * `94` - User edit reverted * `95` - Project setting changed * `96` - Component setting changed * `97` - User access changed * `98` - Workspace created * `99` - Workspace setting changed * `100` - Project moved' ErrorResponse423: type: object properties: type: $ref: '#/components/schemas/ServerErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error423' required: - errors - type Error403: type: object properties: code: $ref: '#/components/schemas/ErrorCode403Enum' detail: type: string attr: type: - string - 'null' required: - attr - code - detail ErrorResponse401: type: object properties: type: $ref: '#/components/schemas/ClientErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error401' required: - errors - type ErrorResponse429: type: object properties: type: $ref: '#/components/schemas/ClientErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error429' required: - errors - type ErrorCode423Enum: enum: - repository-locked - component-locked - unknown-locked type: string description: '* `repository-locked` - Repository Locked * `component-locked` - Component Locked * `unknown-locked` - Unknown Locked' ErrorResponse400: type: object properties: type: $ref: '#/components/schemas/ErrorResponse400TypeEnum' errors: type: array items: $ref: '#/components/schemas/Error400' required: - errors - type ErrorResponse406: type: object properties: type: $ref: '#/components/schemas/ClientErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error406' required: - errors - type ErrorResponse405: type: object properties: type: $ref: '#/components/schemas/ClientErrorEnum' errors: type: array items: $ref: '#/components/schemas/Error405' required: - errors - type ErrorCode406Enum: enum: - not_acceptable type: string description: '* `not_acceptable` - Not Acceptable' ClientErrorEnum: enum: - client_error type: string description: '* `client_error` - Client Error' headers: X-RateLimit-Limit: schema: type: integer description: Allowed number of requests to perform required: true X-RateLimit-Remaining: schema: type: integer description: Remaining number of requests to perform required: true X-RateLimit-Reset: schema: type: integer description: Number of seconds until the rate-limit window resets required: true securitySchemes: bearerAuth: type: apiKey in: header name: Bearer description: "Token-based authentication with required prefix `Bearer`.\n\n- Each user has a personal access token which they can get from their respective user profile. These tokens have the `wlu_` prefix.\n- It is possible to create project tokens whose access to the API is limited to operations to their associated project. These tokens have the `wlp_` prefix.\n " cookieAuth: type: apiKey in: cookie name: sessionid description: Session-based authentication used when user is signed in. tokenAuth: type: apiKey in: header name: Token description: "Token-based authentication with required prefix `Token`.\n\n- Each user has a personal access token which they can get from their respective user profile. These tokens have the `wlu_` prefix.\n- It is possible to create project tokens whose access to the API is limited to operations to their associated project. These tokens have the `wlp_` prefix.\n " externalDocs: url: https://docs.weblate.org/en/latest/index.html description: Official Weblate documentation