Weblate changes API
The changes API from Weblate — 2 operation(s) for changes.
The changes API from Weblate — 2 operation(s) for changes.
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<!-- Redoc-Inject: <security-definitions> -->\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