Skip to main content

Languages API

General notes

There always must be at least one language and at least one language must always be default. Default language can be changed by setting language of your choice to default and all other languages will be automatically switch to non-default state.

Default language cannot be deleted nor deactivated.

Content

Languages collection:

Single language:

Languages collection

Create language

POST /api/languages

This method needs permission create on settings.

Method for creating new Language.

Request

ParamTypeDescriptionRequirements
idstringISO 639-2 CodeRequired. Must be valid language identifier.
is_activeboolIs activeRequired.
is_defaultboolIs defaultRequired. Can be true only when is_active is true.
POST /api/languages HTTP/1.1
Content-Type: application/json

{
"id": "eng",
"is_active": true,
"is_default": false
}

Responses

201 CREATED

New Language was successfully created.

POST /api/languages HTTP/1.1
Content-Type: application/json
Status-Code: 201

{
"id": "eng",
"name": "English",
"original_name": "English",
"is_active": true,
"is_default": false,
"created_at": "2019-08-07 12:29:14",
"_links": [
{
"href": "/api/languages/eng",
"rel": "self",
"type": "GET"
}
]
}

422 UNPROCESSABLE ENTITY

Validation error occurred.

POST /api/languages HTTP/1.1
Content-Type: application/json
Status-Code: 422

{
"type": "ValidationError",
"message": "The given data was invalid.",
"id": "984a545c-7019-45b4-ab37-3c95da1ed13e",
"errors": [
{
"field": "id",
"message": "This language already exists."
},
{
"field": "is_default",
"message": "Inactive language cannot be default."
}
]
}

Languages index

GET /api/languages

This method does not require any authentication. Without permission read on settings there are returned only active languages.

Get list of existing Languages.

Request

Index behaviourDefinition
Paginated by defaultNo
Sortingid, original_name, created_at
Filtersid:enum, original_name:string, is_default:bool, is_active:bool
Embedded-
GET /api/languages HTTP/1.1

Responses

200 OK

GET /api/languages HTTP/1.1
Content-Type: application/json
Status-Code: 200

{
"items": [
{
"id": "eng",
"name": "English",
"original_name": "English",
"is_active": true,
"is_default": true,
"created_at": "2019-08-07 11:11:51",
"_links": [
{
"href": "/api/languages/eng",
"rel": "self",
"type": "GET"
}
]
},
{
"id": "ces",
"name": "Czech",
"original_name": "čeština",
"is_active": true,
"is_default": false,
"created_at": "2019-08-07 11:11:51",
"_links": [
{
"href": "/api/languages/ces",
"rel": "self",
"type": "GET"
}
]
}
]
}


Single Language

Language detail

GET /api/languages/{language_id}

This method does not require any authentication. Without permission read on settings there can be obtained only active language.

Get Language detail.

Request

GET /api/languages/eng HTTP/1.1

Responses

200 OK

GET /api/languages/eng HTTP/1.1
Content-Type: application/json
Status-Code: 200

{
"id": "eng",
"name": "English",
"original_name": "English",
"is_active": true,
"is_default": true,
"created_at": "2019-08-07 11:11:51",
"_links": [
{
"href": "/api/languages/eng",
"rel": "self",
"type": "GET"
}
]
}

404 NOT FOUND

Language was not found. Also returned when trying to get detail of inactive language without permission read on settings.

GET /api/languages/unk HTTP/1.1
Content-Type: application/json
Status-Code: 404

{
"type": "NotFound",
"message": "Required model was not found.",
"id": "0cd85449-05fe-4866-9802-8192e6785fc7"
}

Update Language

PUT/PATCH /api/languages/{language_id}

This method needs permission update on settings.

Method for updating Language data.

Request

ParamTypeDescriptionRequirements
is_activeboolIs activeRequired. Can be false only when updated Language is not default.
is_defaultboolIs defaultRequired. Can be true only when updated Language is active. Cannot be set to false when Language is default.

For PATCH method any field can be omitted.

PUT /api/languages/eng HTTP/1.1
Content-Type: application/json

{
"is_active": true,
"is_default": true
}

Responses

200 OK

Language successfully updated.

PUT /api/languages/eng HTTP/1.1
Content-Type: application/json
Status-Code: 200

{
"id": "eng",
"name": "English",
"original_name": "English",
"is_active": true,
"is_default": true,
"created_at": "2019-08-07 11:11:51",
"_links": [
{
"href": "/api/languages/eng",
"rel": "self",
"type": "GET"
}
]
}

404 NOT FOUND

Language was not found.

PUT /api/languages/unk HTTP/1.1
Content-Type: application/json
Status-Code: 404

{
"type": "NotFound",
"message": "Required model was not found.",
"id": "0cd85449-05fe-4866-9802-8192e6785fc7"
}

422 UNPROCESSABLE ENTITY

Validation error occurred.

PUT /api/languages/eng HTTP/1.1
Content-Type: application/json
Status-Code: 422

{
"type": "ValidationError",
"message": "The given data was invalid.",
"id": "ad659bbb-608c-4cf9-8e5b-2b3078b25beb",
"errors": [
{
"field": "is_default",
"message": "Set another language as default."
}
]
}

Delete Language

DELETE /api/languages/{language_id}

This method needs permission delete on settings.

Method for deleting Language.

Warning note: When language is deleted, all translations for this language will be deleted with it!

Request

DELETE /api/languages/eng HTTP/1.1

Responses

204 NO CONTENT

Language successfully deleted.

DELETE /api/languages/eng HTTP/1.1
Status-Code: 204

404 NOT FOUND

Language was not found.

DELETE /api/languages/unk HTTP/1.1
Content-Type: application/json
Status-Code: 404

{
"type": "NotFound",
"message": "Required model was not found.",
"id": "0cd85449-05fe-4866-9802-8192e6785fc7"
}

423 LOCKED

Trying to delete default Language.

DELETE /api/languages/eng HTTP/1.1
Content-Type: application/json
Status-Code: 423

{
"type": "Locked",
"message": "Default language cannot be deleted.",
"id": "7a0073d3-f344-4f59-88e1-64b0325baa85"
}