Appearance
branding
3 endpoints.
GET /api/v1/branding
Get Branding
200 — Successful Response
json
{
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"title": "Title",
"default": "The Cockpit"
},
"subtitle": {
"type": "string",
"maxLength": 120,
"title": "Subtitle",
"default": ""
},
"logo_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Logo Url"
},
"logo_dark_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Logo Dark Url"
},
"favicon_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Favicon Url"
},
"primary_color": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Primary Color"
},
"primary_foreground": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Primary Foreground"
},
"background_color": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Background Color"
},
"background_color_dark": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Background Color Dark"
}
},
"type": "object",
"title": "Branding",
"description": "App-wide branding shown in the SPA sidebar and browser tab title."
}PUT /api/v1/branding
Update Branding
Request body
json
{
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"title": "Title",
"default": "The Cockpit"
},
"subtitle": {
"type": "string",
"maxLength": 120,
"title": "Subtitle",
"default": ""
},
"logo_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Logo Url"
},
"logo_dark_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Logo Dark Url"
},
"favicon_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Favicon Url"
},
"primary_color": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Primary Color"
},
"primary_foreground": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Primary Foreground"
},
"background_color": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Background Color"
},
"background_color_dark": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Background Color Dark"
}
},
"type": "object",
"title": "Branding",
"description": "App-wide branding shown in the SPA sidebar and browser tab title."
}200 — Successful Response
json
{
"properties": {
"title": {
"type": "string",
"maxLength": 120,
"title": "Title",
"default": "The Cockpit"
},
"subtitle": {
"type": "string",
"maxLength": 120,
"title": "Subtitle",
"default": ""
},
"logo_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Logo Url"
},
"logo_dark_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Logo Dark Url"
},
"favicon_url": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Favicon Url"
},
"primary_color": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Primary Color"
},
"primary_foreground": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Primary Foreground"
},
"background_color": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Background Color"
},
"background_color_dark": {
"anyOf": [
{
"type": "string",
"maxLength": 64
},
{
"type": "null"
}
],
"title": "Background Color Dark"
}
},
"type": "object",
"title": "Branding",
"description": "App-wide branding shown in the SPA sidebar and browser tab title."
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}POST /api/v1/branding/propagate
Propagate Branding
Push the saved branding out to the sibling services (portal / chat / mailsuite). Uses the persisted row, not an unsaved edit, so what propagates is exactly what the app itself shows. Each target reports independently.
Request body
json
{
"properties": {
"targets": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"title": "Targets"
}
},
"type": "object",
"title": "PropagateRequest"
}200 — Successful Response
json
{
"additionalProperties": true,
"type": "object",
"title": "Response Propagate Branding Api V1 Branding Propagate Post"
}422 — Validation Error
json
{
"properties": {
"detail": {
"items": {
"properties": {
"loc": {
"items": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer"
}
]
},
"type": "array",
"title": "Location"
},
"msg": {
"type": "string",
"title": "Message"
},
"type": {
"type": "string",
"title": "Error Type"
}
},
"type": "object",
"required": [
"loc",
"msg",
"type"
],
"title": "ValidationError"
},
"type": "array",
"title": "Detail"
}
},
"type": "object",
"title": "HTTPValidationError"
}