Overview #
List themes #
GET
/api/admin/26.0/themes
Parameters
| Field | Type | Description |
|---|---|---|
| limit | integer | [Optional] Number of results to return (default 20, max 10000) |
| page | integer | [Optional] Page number to fetch (default 1) |
| sort_by | string | [Optional] Field to sort by (e.g. created_at, title) |
| sort_order | string | [Optional] Sort direction: asc or desc |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"themes": [
{
"id": 102,
"name": "Velocity Modern",
"role": "main",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"previewable": true,
"processing": false
}
],
"pagination": {
"current_page": 1,
"per_page": 20,
"total": 1,
"total_pages": 1
},
"access_level": "full"
}
Get theme details #
GET
/api/admin/26.0/themes/{id}
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"theme": {
"id": 102,
"name": "Velocity Modern",
"role": "main",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"previewable": true,
"processing": false
},
"access_level": "full"
}
List theme files #
GET
/api/admin/26.0/themes/{id}/files
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"theme_name": "velocity-modern",
"theme_details": {
"id": 102,
"name": "Velocity Modern",
"role": "main",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"previewable": true,
"processing": false
},
"files": [
{
"type": "folder",
"name": "layout",
"path": "\/layout",
"children": [
{
"type": "file",
"name": "theme.jw",
"path": "\/layout\/theme.jw"
}
]
}
]
}
Get theme file #
GET
/api/admin/26.0/themes/{id}/files/file
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"file": {
"name": "theme.jw",
"path": "layout\/theme.jw",
"type": "file",
"extension": "jw",
"last_modified": "2026-08-27T11:31:04+02:00",
"created": "2026-08-27T11:31:04+02:00",
"cdn": false,
"content": "{% rules %}\n{\n \"name\": \"Theme\",\n \"schema\": []\n}\n{% endrules %}"
},
"theme": {
"id": "{id}",
"name": "Theme",
"handle": "{id}"
}
}
Create/Update theme file #
POST
/api/admin/26.0/themes/{id}/files
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
| key | string | [Required] File path/key (e.g. layout/theme.jw) |
| value | string | [Required] File content to save |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Request Body
{
"file": {
"path": "example_path",
"content": "example_content"
}
}
Response
200 OK
{
"success": true,
"message": "File created successfully"
}
Update Theme File #
PUT
/api/admin/26.0/themes/{id}/files/file
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
| key | string | [Required] File path/key (e.g. layout/theme.jw) |
| value | string | [Required] File content to save |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Request Body
{
"key": "layout/theme.jw",
"value": "{% rules %}
..."
}
Response
200 OK
{
"success": true,
"message": "File updated successfully"
}
Delete theme file #
DELETE
/api/admin/26.0/themes/{id}/files/file
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"success": true,
"message": "File deleted successfully"
}
List theme assets #
GET
/api/admin/26.0/themes/{id}/assets
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"theme_name": "velocity-modern",
"theme_details": {
"id": 102,
"name": "Velocity Modern",
"role": "main",
"created_at": "2026-08-27T11:31:04+02:00",
"updated_at": "2026-08-27T11:31:04+02:00",
"previewable": true,
"processing": false
},
"assets": [
{
"type": "folder",
"name": "layout",
"path": "\/layout",
"children": [
{
"type": "file",
"name": "theme.jw",
"path": "\/layout\/theme.jw"
}
]
}
]
}
Get theme asset #
GET
/api/admin/26.0/themes/{id}/assets/file
Parameters
| Field | Type | Description |
|---|---|---|
| id | integer/string | [Required] The resource ID or handle |
Headers
| Header | Value |
|---|---|
| X-Joonweb-Access-Token | jw_at_xxxxxxxxxxxx |
| Content-Type | application/json |
Request Example
Response
200 OK
{
"file": {
"name": "theme.jw",
"path": "layout\/theme.jw",
"type": "file",
"extension": "jw",
"last_modified": "2026-08-27T11:31:04+02:00",
"created": "2026-08-27T11:31:04+02:00",
"cdn": false,
"content": "{% rules %}\n{\n \"name\": \"Theme\",\n \"schema\": []\n}\n{% endrules %}"
},
"theme": {
"id": "{id}",
"name": "Theme",
"handle": "{id}"
}
}