Skip to content

Schema

A schema describes how a service should be presented: names, units, descriptions, enums, value ranges, display formats and callable methods — per service identifier, so one schema covers every device exposing that service. Schemas live in the backend and are not enforced on the device: labels, enums and units can change without touching firmware.

Property ids use the same canonical hex form (0x0800) as the flake module, so schema entries match property listings directly, no conversion needed. Methods declared here are callable via POST /devices/…/messages/{name}.

POSTCreate a schema/api/v1/schema
GETList schemas/api/v1/schema
GETRead one schema/api/v1/schema/:serviceIdentifier
PATCHUpdate a schema/api/v1/schema/:serviceIdentifier
DELETEDelete a schema/api/v1/schema/:serviceIdentifier

Create a schema

Stores the schema for a service identifier — one per service, shared by every device exposing it.

POST/api/v1/schema

Body

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
namestringHuman-readable name of the service.
min length 1 · max length 64
descriptionstringoptionalWhat the service is, for readers of the schema.
propertiesarrayProperty entries of the service, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName shown instead of the numeric id, e.g. temperature.
min length 1 · max length 64
descriptionstringoptionalWhat the property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values, unique by value — lets a UI render a dropdown instead of a numeric input.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
rangeMinnumberoptionalMinimum (inclusive); numeric types only.
rangeMaxnumberoptionalMaximum (exclusive); numeric types only.
unitstringoptionalUnit label, e.g. °C.
readonlybooleanoptionalUI hint: do not offer editing. The device that transmitted the property has the final say.
actionablebooleanoptionalUI hint: writing triggers an action rather than storing a value.
groupstringoptionalGroups properties into subjects for presentation.
hintstringoptionalFree-text hint about the content, e.g. marking a property as a script or an email.
displayobjectoptionalHow the raw value is rendered for a reader; absent means “as transmitted”. Fields slice the value, a template words the result.
fieldsarray
keystringPattern: ^[a-z][a-z0-9_]{0,15}$
offsetintegeroptionalmin 0 · max 63
widthintegeroptionalmin 1 · max 64
render
Alternative 1object
kind
radixoptional
Alternative 1
Alternative 2
uppercasebooleanoptional
Alternative 2object
kind
factornumber
offsetnumberoptional
decimalsintegermin 0 · max 6
Alternative 3object
kind
sizeintegermin 1 · max 16
radix
Alternative 1
Alternative 2
separatorstringmin length 1 · max length 2
Pattern: ^[.:\-/ ]+$
padbooleanoptional
uppercasebooleanoptional
Alternative 4object
kind
refstringPattern: ^[a-z0-9][a-z0-9-]{1,62}$
textstringoptionalmin length 1 · max length 120
i18ndictionaryoptional
separatorstringoptionalmin length 1 · max length 4
Pattern: ^[,;|/·\-\s]+$
i18ndictionaryoptionalTranslations of name, description and group, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
groupstringoptionalTranslated group label.
methodsarrayoptionalMethods callable on the service via POST …/messages/{name}, unique by name.
namestringMethod name — also the URL segment of the call.
min length 1 · max length 64
descriptionstringoptionalWhat the method does.
parametersarrayoptionalParameters the method takes, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringParameter name.
min length 1 · max length 64
descriptionstringoptionalWhat the parameter means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
optionalbooleanoptionalMay be omitted in the call.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
successarrayProperties the device returns on success, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName of the returned property.
min length 1 · max length 64
descriptionstringoptionalWhat the returned property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values of the returned property.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
failurearrayoptionalMaps device error codes to human labels, unique by code.
codestringError code as the device reports it.
min length 1
namestringLabel shown for the error.
min length 1 · max length 64
descriptionstringoptionalWhat the error means.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
tenantIdstringoptionalTenant to create the schema in; defaults to the caller's tenant.
Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$

Response

NameDescription
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
409A schema for this service identifier already exists; change it with PATCH.
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

List schemas

Lists every schema of the tenant; depth=1 includes the full entries.

GET/api/v1/schema?depth=0

Query Parameters

NameDescription
depthintegeroptionalHow many levels of nested resources the response includes; 0 returns only the top level.
Default: 0
min 0

Response

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
schemaobjectoptionaldepth ≥ 1The full schema entry; included at depth ≥ 1.
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
namestringHuman-readable name of the service.
min length 1 · max length 64
descriptionstringoptionalWhat the service is, for readers of the schema.
propertiesarrayProperty entries of the service, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName shown instead of the numeric id, e.g. temperature.
min length 1 · max length 64
descriptionstringoptionalWhat the property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values, unique by value — lets a UI render a dropdown instead of a numeric input.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
rangeMinnumberoptionalMinimum (inclusive); numeric types only.
rangeMaxnumberoptionalMaximum (exclusive); numeric types only.
unitstringoptionalUnit label, e.g. °C.
readonlybooleanoptionalUI hint: do not offer editing. The device that transmitted the property has the final say.
actionablebooleanoptionalUI hint: writing triggers an action rather than storing a value.
groupstringoptionalGroups properties into subjects for presentation.
hintstringoptionalFree-text hint about the content, e.g. marking a property as a script or an email.
displayobjectoptionalHow the raw value is rendered for a reader; absent means “as transmitted”. Fields slice the value, a template words the result.
fieldsarray
keystringPattern: ^[a-z][a-z0-9_]{0,15}$
offsetintegeroptionalmin 0 · max 63
widthintegeroptionalmin 1 · max 64
render
Alternative 1object
kind
radixoptional
Alternative 1
Alternative 2
uppercasebooleanoptional
Alternative 2object
kind
factornumber
offsetnumberoptional
decimalsintegermin 0 · max 6
Alternative 3object
kind
sizeintegermin 1 · max 16
radix
Alternative 1
Alternative 2
separatorstringmin length 1 · max length 2
Pattern: ^[.:\-/ ]+$
padbooleanoptional
uppercasebooleanoptional
Alternative 4object
kind
refstringPattern: ^[a-z0-9][a-z0-9-]{1,62}$
textstringoptionalmin length 1 · max length 120
i18ndictionaryoptional
separatorstringoptionalmin length 1 · max length 4
Pattern: ^[,;|/·\-\s]+$
i18ndictionaryoptionalTranslations of name, description and group, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
groupstringoptionalTranslated group label.
methodsarrayoptionalMethods callable on the service via POST …/messages/{name}, unique by name.
namestringMethod name — also the URL segment of the call.
min length 1 · max length 64
descriptionstringoptionalWhat the method does.
parametersarrayoptionalParameters the method takes, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringParameter name.
min length 1 · max length 64
descriptionstringoptionalWhat the parameter means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
optionalbooleanoptionalMay be omitted in the call.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
successarrayProperties the device returns on success, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName of the returned property.
min length 1 · max length 64
descriptionstringoptionalWhat the returned property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values of the returned property.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
failurearrayoptionalMaps device error codes to human labels, unique by code.
codestringError code as the device reports it.
min length 1
namestringLabel shown for the error.
min length 1 · max length 64
descriptionstringoptionalWhat the error means.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
createdBystringResource identifier of the entity that created this resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

Read one schema

The schema stored for this service identifier.

GET/api/v1/schema/00000000-0000-2001-8003-006d0099ab53

Path Parameters

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Response

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
namestringHuman-readable name of the service.
min length 1 · max length 64
descriptionstringoptionalWhat the service is, for readers of the schema.
propertiesarrayProperty entries of the service, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName shown instead of the numeric id, e.g. temperature.
min length 1 · max length 64
descriptionstringoptionalWhat the property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values, unique by value — lets a UI render a dropdown instead of a numeric input.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
rangeMinnumberoptionalMinimum (inclusive); numeric types only.
rangeMaxnumberoptionalMaximum (exclusive); numeric types only.
unitstringoptionalUnit label, e.g. °C.
readonlybooleanoptionalUI hint: do not offer editing. The device that transmitted the property has the final say.
actionablebooleanoptionalUI hint: writing triggers an action rather than storing a value.
groupstringoptionalGroups properties into subjects for presentation.
hintstringoptionalFree-text hint about the content, e.g. marking a property as a script or an email.
displayobjectoptionalHow the raw value is rendered for a reader; absent means “as transmitted”. Fields slice the value, a template words the result.
fieldsarray
keystringPattern: ^[a-z][a-z0-9_]{0,15}$
offsetintegeroptionalmin 0 · max 63
widthintegeroptionalmin 1 · max 64
render
Alternative 1object
kind
radixoptional
Alternative 1
Alternative 2
uppercasebooleanoptional
Alternative 2object
kind
factornumber
offsetnumberoptional
decimalsintegermin 0 · max 6
Alternative 3object
kind
sizeintegermin 1 · max 16
radix
Alternative 1
Alternative 2
separatorstringmin length 1 · max length 2
Pattern: ^[.:\-/ ]+$
padbooleanoptional
uppercasebooleanoptional
Alternative 4object
kind
refstringPattern: ^[a-z0-9][a-z0-9-]{1,62}$
textstringoptionalmin length 1 · max length 120
i18ndictionaryoptional
separatorstringoptionalmin length 1 · max length 4
Pattern: ^[,;|/·\-\s]+$
i18ndictionaryoptionalTranslations of name, description and group, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
groupstringoptionalTranslated group label.
methodsarrayoptionalMethods callable on the service via POST …/messages/{name}, unique by name.
namestringMethod name — also the URL segment of the call.
min length 1 · max length 64
descriptionstringoptionalWhat the method does.
parametersarrayoptionalParameters the method takes, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringParameter name.
min length 1 · max length 64
descriptionstringoptionalWhat the parameter means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
optionalbooleanoptionalMay be omitted in the call.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
successarrayProperties the device returns on success, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName of the returned property.
min length 1 · max length 64
descriptionstringoptionalWhat the returned property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values of the returned property.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
failurearrayoptionalMaps device error codes to human labels, unique by code.
codestringError code as the device reports it.
min length 1
namestringLabel shown for the error.
min length 1 · max length 64
descriptionstringoptionalWhat the error means.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
createdBystringResource identifier of the entity that created this resource

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No schema stored for this service identifier.
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

Update a schema

Merges changes into the stored schema. List entries are matched by id (properties) or name (methods); remove: true deletes the matched entry.

PATCH/api/v1/schema/00000000-0000-2001-8003-006d0099ab53

Path Parameters

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Body

NameDescription
namestringoptionalHuman-readable name of the service.
min length 1 · max length 64
descriptionstringoptionalWhat the service is, for readers of the schema.
propertiesarrayoptionalProperty entries of the service, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
removeoptionalDelete the matched entry instead of merging into it.
namestringoptionalName shown instead of the numeric id, e.g. temperature.
min length 1 · max length 64
descriptionstringoptionalWhat the property means.
typeoptionalenumWire type of the property (UINT16, FLOAT, STRING, …).
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values, unique by value — lets a UI render a dropdown instead of a numeric input.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
rangeMinnumberoptionalMinimum (inclusive); numeric types only.
rangeMaxnumberoptionalMaximum (exclusive); numeric types only.
unitstringoptionalUnit label, e.g. °C.
readonlybooleanoptionalUI hint: do not offer editing. The device that transmitted the property has the final say.
actionablebooleanoptionalUI hint: writing triggers an action rather than storing a value.
groupstringoptionalGroups properties into subjects for presentation.
hintstringoptionalFree-text hint about the content, e.g. marking a property as a script or an email.
displayobjectoptionalHow the raw value is rendered for a reader; absent means “as transmitted”. Fields slice the value, a template words the result.
fieldsarray
keystringPattern: ^[a-z][a-z0-9_]{0,15}$
offsetintegeroptionalmin 0 · max 63
widthintegeroptionalmin 1 · max 64
render
Alternative 1object
kind
radixoptional
Alternative 1
Alternative 2
uppercasebooleanoptional
Alternative 2object
kind
factornumber
offsetnumberoptional
decimalsintegermin 0 · max 6
Alternative 3object
kind
sizeintegermin 1 · max 16
radix
Alternative 1
Alternative 2
separatorstringmin length 1 · max length 2
Pattern: ^[.:\-/ ]+$
padbooleanoptional
uppercasebooleanoptional
Alternative 4object
kind
refstringPattern: ^[a-z0-9][a-z0-9-]{1,62}$
textstringoptionalmin length 1 · max length 120
i18ndictionaryoptional
separatorstringoptionalmin length 1 · max length 4
Pattern: ^[,;|/·\-\s]+$
i18ndictionaryoptionalTranslations of name, description and group, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
groupstringoptionalTranslated group label.
methodsarrayoptionalMethods callable on the service via POST …/messages/{name}, unique by name.
namestringMethod name — also the URL segment of the call.
min length 1 · max length 64
removeoptionalDelete the matched entry instead of merging into it.
descriptionstringoptionalWhat the method does.
parametersarrayoptionalParameters the method takes, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringParameter name.
min length 1 · max length 64
descriptionstringoptionalWhat the parameter means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
optionalbooleanoptionalMay be omitted in the call.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
successarrayoptionalProperties the device returns on success, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName of the returned property.
min length 1 · max length 64
descriptionstringoptionalWhat the returned property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values of the returned property.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
failurearrayoptionalMaps device error codes to human labels, unique by code.
codestringError code as the device reports it.
min length 1
namestringLabel shown for the error.
min length 1 · max length 64
descriptionstringoptionalWhat the error means.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No schema stored for this service identifier.
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The merged result of the PATCH would not be a valid schema — e.g. a new property added without its required fields. message says what is wrong.message: string
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

Delete a schema

Removes the schema of this service identifier.

DELETE/api/v1/schema/00000000-0000-2001-8003-006d0099ab53

Path Parameters

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$

Errors

StatusDescriptionBody
403You do not have permission to perform this action
404No schema stored for this service identifier.
409A tenant with the given name already existscode: IAM_TENANT_CONFLICT_ERROR
400The request did not match the schema for this endpoint. The details field carries the specific failures.error: Validation Error
401No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key.error: string
500The request failed for a reason that is not the caller's to fix. Safe to retry.error: string, message: string, statusCode: 50

Events

Published on the tenant's event stream and delivered over the websocket to every subscriber holding read on the resource the message names. resourceIdentifier is the resource the action changed; the payload is the shape below.

EventDescription
SCHEMA_CREATEA service schema was created.
SCHEMA_DELETEA service schema was removed.
SCHEMA_UPDATEA service schema was changed.

Schema created

A service schema was created.

EVENTSCHEMA_CREATE

Payload

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
namestringHuman-readable name of the service.
min length 1 · max length 64
descriptionstringoptionalWhat the service is, for readers of the schema.
propertiesarrayProperty entries of the service, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName shown instead of the numeric id, e.g. temperature.
min length 1 · max length 64
descriptionstringoptionalWhat the property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values, unique by value — lets a UI render a dropdown instead of a numeric input.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
rangeMinnumberoptionalMinimum (inclusive); numeric types only.
rangeMaxnumberoptionalMaximum (exclusive); numeric types only.
unitstringoptionalUnit label, e.g. °C.
readonlybooleanoptionalUI hint: do not offer editing. The device that transmitted the property has the final say.
actionablebooleanoptionalUI hint: writing triggers an action rather than storing a value.
groupstringoptionalGroups properties into subjects for presentation.
hintstringoptionalFree-text hint about the content, e.g. marking a property as a script or an email.
displayobjectoptionalHow the raw value is rendered for a reader; absent means “as transmitted”. Fields slice the value, a template words the result.
fieldsarray
keystringPattern: ^[a-z][a-z0-9_]{0,15}$
offsetintegeroptionalmin 0 · max 63
widthintegeroptionalmin 1 · max 64
render
Alternative 1object
kind
radixoptional
Alternative 1
Alternative 2
uppercasebooleanoptional
Alternative 2object
kind
factornumber
offsetnumberoptional
decimalsintegermin 0 · max 6
Alternative 3object
kind
sizeintegermin 1 · max 16
radix
Alternative 1
Alternative 2
separatorstringmin length 1 · max length 2
Pattern: ^[.:\-/ ]+$
padbooleanoptional
uppercasebooleanoptional
Alternative 4object
kind
refstringPattern: ^[a-z0-9][a-z0-9-]{1,62}$
textstringoptionalmin length 1 · max length 120
i18ndictionaryoptional
separatorstringoptionalmin length 1 · max length 4
Pattern: ^[,;|/·\-\s]+$
i18ndictionaryoptionalTranslations of name, description and group, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
groupstringoptionalTranslated group label.
methodsarrayoptionalMethods callable on the service via POST …/messages/{name}, unique by name.
namestringMethod name — also the URL segment of the call.
min length 1 · max length 64
descriptionstringoptionalWhat the method does.
parametersarrayoptionalParameters the method takes, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringParameter name.
min length 1 · max length 64
descriptionstringoptionalWhat the parameter means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
optionalbooleanoptionalMay be omitted in the call.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
successarrayProperties the device returns on success, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName of the returned property.
min length 1 · max length 64
descriptionstringoptionalWhat the returned property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values of the returned property.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
failurearrayoptionalMaps device error codes to human labels, unique by code.
codestringError code as the device reports it.
min length 1
namestringLabel shown for the error.
min length 1 · max length 64
descriptionstringoptionalWhat the error means.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
createdBystringResource identifier of the entity that created this resource

Schema deleted

A service schema was removed.

EVENTSCHEMA_DELETE

Payload

NameDescription

Schema updated

A service schema was changed.

EVENTSCHEMA_UPDATE

Payload

NameDescription
serviceIdentifierstringService identifier (UUID) the schema applies to — shared by every device exposing the service.
Pattern: ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$
namestringHuman-readable name of the service.
min length 1 · max length 64
descriptionstringoptionalWhat the service is, for readers of the schema.
propertiesarrayProperty entries of the service, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName shown instead of the numeric id, e.g. temperature.
min length 1 · max length 64
descriptionstringoptionalWhat the property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values, unique by value — lets a UI render a dropdown instead of a numeric input.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
rangeMinnumberoptionalMinimum (inclusive); numeric types only.
rangeMaxnumberoptionalMaximum (exclusive); numeric types only.
unitstringoptionalUnit label, e.g. °C.
readonlybooleanoptionalUI hint: do not offer editing. The device that transmitted the property has the final say.
actionablebooleanoptionalUI hint: writing triggers an action rather than storing a value.
groupstringoptionalGroups properties into subjects for presentation.
hintstringoptionalFree-text hint about the content, e.g. marking a property as a script or an email.
displayobjectoptionalHow the raw value is rendered for a reader; absent means “as transmitted”. Fields slice the value, a template words the result.
fieldsarray
keystringPattern: ^[a-z][a-z0-9_]{0,15}$
offsetintegeroptionalmin 0 · max 63
widthintegeroptionalmin 1 · max 64
render
Alternative 1object
kind
radixoptional
Alternative 1
Alternative 2
uppercasebooleanoptional
Alternative 2object
kind
factornumber
offsetnumberoptional
decimalsintegermin 0 · max 6
Alternative 3object
kind
sizeintegermin 1 · max 16
radix
Alternative 1
Alternative 2
separatorstringmin length 1 · max length 2
Pattern: ^[.:\-/ ]+$
padbooleanoptional
uppercasebooleanoptional
Alternative 4object
kind
refstringPattern: ^[a-z0-9][a-z0-9-]{1,62}$
textstringoptionalmin length 1 · max length 120
i18ndictionaryoptional
separatorstringoptionalmin length 1 · max length 4
Pattern: ^[,;|/·\-\s]+$
i18ndictionaryoptionalTranslations of name, description and group, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
groupstringoptionalTranslated group label.
methodsarrayoptionalMethods callable on the service via POST …/messages/{name}, unique by name.
namestringMethod name — also the URL segment of the call.
min length 1 · max length 64
descriptionstringoptionalWhat the method does.
parametersarrayoptionalParameters the method takes, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringParameter name.
min length 1 · max length 64
descriptionstringoptionalWhat the parameter means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
optionalbooleanoptionalMay be omitted in the call.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
successarrayProperties the device returns on success, unique by id.
idstringProperty id in canonical form: 0x + four uppercase hex digits (e.g. 0x0800), exactly as flake property listings report it.
Pattern: ^(0x|0X)?[0-9a-fA-F]+$
namestringName of the returned property.
min length 1 · max length 64
descriptionstringoptionalWhat the returned property means.
typeenumWire type of the returned property.
Possible values: uint8, uint16, uint32, uint64, int8, int16, int32, int64, bool, uuid, float, float64, datetime, string, binary, binary-stream, string-stream, int64-array, int32-array, int16-array, int8-array, uint64-array, uint32-array, uint16-array, uint8-array, bool-array, uuid-array, float64-array, float-array, datetime-array, string-array
enumarrayoptionalNamed values of the returned property.
valuestringThe raw value as the device transmits it.
min length 1
namestringLabel shown for the value.
min length 1 · max length 64
descriptionstringoptionalWhat the value means.
i18ndictionaryoptionalTranslations of the label, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
failurearrayoptionalMaps device error codes to human labels, unique by code.
codestringError code as the device reports it.
min length 1
namestringLabel shown for the error.
min length 1 · max length 64
descriptionstringoptionalWhat the error means.
i18ndictionaryoptionalTranslations, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
i18ndictionaryoptionalTranslations of name and description, keyed by locale.
namestringoptionalTranslated name.
min length 1 · max length 64
descriptionstringoptionalTranslated description.
resourceIdentifierstringUnique Coldwave resource name (CRN) that identifies a resource
createdBystringResource identifier of the entity that created this resource