Weblate hooks API
Notification hooks allow external applications to notify Weblate that the VCS repository has been updated. You can use repository endpoints for projects, components and translations to update individual repositories.
Notification hooks allow external applications to notify Weblate that the VCS repository has been updated. You can use repository endpoints for projects, components and translations to update individual repositories.
openapi: 3.1.1
info:
title: Weblate's REST addons hooks 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: hooks
description: 'Notification hooks allow external applications to notify Weblate that the VCS repository has been updated.
You can use repository endpoints for projects, components and translations to update individual repositories.'
paths:
/hooks/{service}/:
post:
operationId: hooks_incoming
description: Process incoming webhook from a code hosting site.
parameters:
- in: path
name: service
schema:
type: string
enum:
- azure
- bitbucket
- forgejo
- gitea
- gitee
- github
- gitlab
- pagure
required: true
tags:
- hooks
security:
- {}
responses:
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse400'
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: ''
'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/HookResponse'
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:
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
schemas:
ErrorCode406Enum:
enum:
- not_acceptable
type: string
description: '* `not_acceptable` - Not Acceptable'
Error423:
type: object
properties:
code:
$ref: '#/components/schemas/ErrorCode423Enum'
detail:
type: string
attr:
type:
- string
- 'null'
required:
- attr
- code
- detail
ErrorResponse404:
type: object
properties:
type:
$ref: '#/components/schemas/ClientErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error404'
required:
- errors
- type
HookMatch:
type: object
properties:
repository_matches:
type: integer
branch_matches:
type: integer
enabled_hook_matches:
type: integer
required:
- branch_matches
- enabled_hook_matches
- repository_matches
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
ErrorResponse400TypeEnum:
enum:
- validation_error
- client_error
type: string
description: '* `validation_error` - Validation Error
* `client_error` - Client Error'
HookResponse:
type: object
properties:
message:
type: string
maxLength: 200
status:
$ref: '#/components/schemas/StatusEnum'
match_status:
$ref: '#/components/schemas/HookMatch'
updated_components:
type: array
items:
type: string
format: uri
readOnly: true
required:
- message
- status
- updated_components
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
ErrorResponse423:
type: object
properties:
type:
$ref: '#/components/schemas/ServerErrorEnum'
errors:
type: array
items:
$ref: '#/components/schemas/Error423'
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
StatusEnum:
enum:
- success
- failure
type: string
description: '* `success` - success
* `failure` - failure'
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
ErrorCode405Enum:
enum:
- method_not_allowed
type: string
description: '* `method_not_allowed` - Method Not Allowed'
ClientErrorEnum:
enum:
- client_error
type: string
description: '* `client_error` - Client Error'
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