Appearance
Metaschema
Descriptions of the free-form data object in a device's metadata — not of the values a device reports, which the schema module covers. Each key gets a label, one of four value kinds (number, string, boolean, datetime), and optional unit, range and enum, so a UI can render a form rather than a JSON editor. A schema is either the tenant's shared one, covering all its devices, or describes one service and applies to every device exposing it.
The metadata itself lives in the meta module. Changes are pushed as META_SCHEMA_CREATE, META_SCHEMA_UPDATE and META_SCHEMA_DELETE over the websocket; the writing side is covered by Metadata.
| POST | Create a meta schema/api/v1/meta-schema |
| GET | List meta schemas/api/v1/meta-schema |
| GET | Resolve schemas of a device/api/v1/meta-schema/device/:deviceId |
| GET | Read one meta schema/api/v1/meta-schema/:schemaId |
| PATCH | Update a meta schema/api/v1/meta-schema/:schemaId |
| DELETE | Delete a meta schema/api/v1/meta-schema/:schemaId |
Create a meta schema
Describes the metadata of one service, or — with shared: true — of every device in the tenant; exactly one of the two. Each slot holds at most one schema, so a second schema for the same service, or a second shared one, is rejected.
POST
/api/v1/meta-schemaBody
| Name | Description |
|---|---|
namestring | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarray | The metadata keys this schema describes, unique by key. |
keystring | The key this property occupies in the device's metadata object. min length 1 · max length 64 |
namestring | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value — lets a UI offer a dropdown instead of a free-text field. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; a field left out falls back to the untranslated value. The whole map is served — the consumer picks the locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
sharedbooleanoptional | Makes this the tenant's shared schema, applying to all of its devices; exactly one of shared and serviceIdentifier may be set.Default: false |
serviceIdentifierstringoptional | The service whose metadata this schema describes — it then applies to every device exposing that service. Left out for the shared schema. 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}$ |
tenantIdstringoptional | Which tenant the schema is created in. Only needed when the caller's access spans several tenants — without it the call is refused as ambiguous. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
Response
| Name | Description |
|---|---|
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
Errors
| Status | Description | Body |
|---|---|---|
403 | You do not have permission to perform this action | |
409 | A tenant with the given name already exists | code: IAM_TENANT_CONFLICT_ERROR |
409 | A meta schema with this id already exists in the tenant — patch the existing one instead of creating it again. | |
400 | The request did not match the schema for this endpoint. The details field carries the specific failures. | error: Validation Error |
401 | No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key. | error: string |
500 | The request failed for a reason that is not the caller's to fix. Safe to retry. | error: string, message: string, statusCode: 50 |
List meta schemas
Lists the schemas stored in the tenant — the shared one and one per service; depth=1 adds the full entries. Which of them apply to a given device is answered by /meta-schema/device/{deviceId}.
GET
/api/v1/meta-schema?depth=0Query Parameters
| Name | Description |
|---|---|
depthintegeroptional | How many levels of nested resources the response includes; 0 returns only the top level. Default: 0min 0 |
Response
| Name | Description |
|---|---|
idstring | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
sharedboolean | Whether this is the tenant's shared schema, which applies to all of its devices. |
serviceIdentifierstringoptional | The service whose metadata this schema describes; absent on the shared schema. 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}$ |
schemaobjectoptionaldepth ≥ 1 | The full schema entry; included at depth ≥ 1. |
namestring | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarray | The metadata keys this schema describes, unique by key. |
keystring | The key this property occupies in the device's metadata object. min length 1 · max length 64 |
namestring | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value — lets a UI offer a dropdown instead of a free-text field. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; a field left out falls back to the untranslated value. The whole map is served — the consumer picks the locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
idstring | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
sharedboolean | Whether this is the tenant's shared schema, which applies to all of its devices. |
serviceIdentifierstringoptional | The service whose metadata this schema describes; absent on the shared schema. 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}$ |
createdBystring | Resource identifier of the entity that created this resource |
Errors
| Status | Description | Body |
|---|---|---|
403 | You do not have permission to perform this action | |
409 | A tenant with the given name already exists | code: IAM_TENANT_CONFLICT_ERROR |
400 | The request did not match the schema for this endpoint. The details field carries the specific failures. | error: Validation Error |
401 | No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key. | error: string |
500 | The request failed for a reason that is not the caller's to fix. Safe to retry. | error: string, message: string, statusCode: 50 |
Resolve schemas of a device
The schemas describing one device's metadata: the tenant's shared schema plus one per service the device exposes — no joining the service list against the schema list. {deviceId} accepts the device id or the IMEI; the array is empty when no schema applies to the device.
GET
/api/v1/meta-schema/device/Yk3pL7rWq2Path Parameters
| Name | Description |
|---|---|
| deviceId | Device id or IMEI. |
Alternative 1string | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
Alternative 2string | Device id or IMEI. max length 16 Pattern: ^[0-9a-fA-F]+$ |
Response
| Name | Description |
|---|---|
namestring | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarray | The metadata keys this schema describes, unique by key. |
keystring | The key this property occupies in the device's metadata object. min length 1 · max length 64 |
namestring | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value — lets a UI offer a dropdown instead of a free-text field. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; a field left out falls back to the untranslated value. The whole map is served — the consumer picks the locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
idstring | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
sharedboolean | Whether this is the tenant's shared schema, which applies to all of its devices. |
serviceIdentifierstringoptional | The service whose metadata this schema describes; absent on the shared schema. 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}$ |
createdBystring | Resource identifier of the entity that created this resource |
Errors
| Status | Description | Body |
|---|---|---|
403 | You do not have permission to perform this action | |
404 | The device does not exist in this tenant. | |
409 | A tenant with the given name already exists | code: IAM_TENANT_CONFLICT_ERROR |
400 | The request did not match the schema for this endpoint. The details field carries the specific failures. | error: Validation Error |
401 | No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key. | error: string |
500 | The request failed for a reason that is not the caller's to fix. Safe to retry. | error: string, message: string, statusCode: 50 |
Read one meta schema
{schemaId} takes the schema id, or the literal shared to reach the tenant's shared schema without looking its id up first.
GET
/api/v1/meta-schema/Yk3pL7rWq2Path Parameters
| Name | Description |
|---|---|
| schemaId | Id of the meta schema, or the alias shared, which resolves to whichever schema is the tenant's shared one. |
Alternative 1string | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
| Alternative 2 |
Response
| Name | Description |
|---|---|
namestring | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarray | The metadata keys this schema describes, unique by key. |
keystring | The key this property occupies in the device's metadata object. min length 1 · max length 64 |
namestring | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value — lets a UI offer a dropdown instead of a free-text field. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; a field left out falls back to the untranslated value. The whole map is served — the consumer picks the locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
idstring | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
sharedboolean | Whether this is the tenant's shared schema, which applies to all of its devices. |
serviceIdentifierstringoptional | The service whose metadata this schema describes; absent on the shared schema. 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}$ |
createdBystring | Resource identifier of the entity that created this resource |
Errors
| Status | Description | Body |
|---|---|---|
403 | You do not have permission to perform this action | |
404 | No meta schema with this id exists in the tenant. | |
409 | A tenant with the given name already exists | code: IAM_TENANT_CONFLICT_ERROR |
400 | The request did not match the schema for this endpoint. The details field carries the specific failures. | error: Validation Error |
401 | No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key. | error: string |
500 | The request failed for a reason that is not the caller's to fix. Safe to retry. | error: string, message: string, statusCode: 50 |
Update a meta schema
Merges changes into the stored schema: properties are matched by key, remove: true deletes one, an explicit null clears an optional field. shared and serviceIdentifier are not patchable — retargeting a schema is a delete plus a create.
PATCH
/api/v1/meta-schema/Yk3pL7rWq2Path Parameters
| Name | Description |
|---|---|
| schemaId | Id of the meta schema, or the alias shared, which resolves to whichever schema is the tenant's shared one. |
Alternative 1string | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
| Alternative 2 |
Body
| Name | Description |
|---|---|
namestringoptional | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarrayoptional | Property patches, matched against the stored list by key; an unmatched patch adds a new property. |
keystring | Which property to patch — the key it occupies in the device's metadata object. min length 1 · max length 64 |
removeoptional | Delete the matched property instead of merging into it. |
namestringoptional | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeoptionalenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value; the list replaces the stored one as a whole. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale; the map replaces the stored one as a whole, so adding a locale means resending the others. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; the map replaces the stored one as a whole. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
Errors
| Status | Description | Body |
|---|---|---|
403 | You do not have permission to perform this action | |
404 | No meta schema with this id exists in the tenant. | |
409 | A tenant with the given name already exists | code: IAM_TENANT_CONFLICT_ERROR |
400 | The merged result of the patch is no longer a valid meta schema — a property added without its required fields, for instance. message names what failed; the stored schema is left untouched. | message: string |
401 | No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key. | error: string |
500 | The request failed for a reason that is not the caller's to fix. Safe to retry. | error: string, message: string, statusCode: 50 |
Delete a meta schema
Removes the schema and frees its slot, so the same service — or the shared slot — can be described again. The metadata stored on the devices stays; only its description is gone.
DELETE
/api/v1/meta-schema/Yk3pL7rWq2Path Parameters
| Name | Description |
|---|---|
| schemaId | Id of the meta schema, or the alias shared, which resolves to whichever schema is the tenant's shared one. |
Alternative 1string | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
| Alternative 2 |
Errors
| Status | Description | Body |
|---|---|---|
403 | You do not have permission to perform this action | |
404 | No meta schema with this id exists in the tenant. | |
409 | A tenant with the given name already exists | code: IAM_TENANT_CONFLICT_ERROR |
400 | The request did not match the schema for this endpoint. The details field carries the specific failures. | error: Validation Error |
401 | No valid access token was presented, or the DPoP proof accompanying it was missing, expired or bound to a different key. | error: string |
500 | The 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.
| Event | Description |
|---|---|
META_SCHEMA_CREATE | A meta schema was stored, taking either the tenant's shared slot or the slot of one service. |
META_SCHEMA_DELETE | A meta schema was removed; the service or shared slot it occupied is free again. |
META_SCHEMA_UPDATE | A patch was merged into a stored schema; the payload carries the complete merged entry, not the patch. |
Meta schema created
A meta schema was stored, taking either the tenant's shared slot or the slot of one service.
EVENT
META_SCHEMA_CREATEPayload
| Name | Description |
|---|---|
namestring | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarray | The metadata keys this schema describes, unique by key. |
keystring | The key this property occupies in the device's metadata object. min length 1 · max length 64 |
namestring | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value — lets a UI offer a dropdown instead of a free-text field. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; a field left out falls back to the untranslated value. The whole map is served — the consumer picks the locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
idstring | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
sharedboolean | Whether this is the tenant's shared schema, which applies to all of its devices. |
serviceIdentifierstringoptional | The service whose metadata this schema describes; absent on the shared schema. 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}$ |
createdBystring | Resource identifier of the entity that created this resource |
Meta schema deleted
A meta schema was removed; the service or shared slot it occupied is free again.
EVENT
META_SCHEMA_DELETEPayload
| Name | Description |
|---|
Meta schema updated
A patch was merged into a stored schema; the payload carries the complete merged entry, not the patch.
EVENT
META_SCHEMA_UPDATEPayload
| Name | Description |
|---|---|
namestring | Human-readable name of the schema. min length 1 · max length 64 |
descriptionstringoptional | What the described metadata is about, for readers of the schema. |
propertiesarray | The metadata keys this schema describes, unique by key. |
keystring | The key this property occupies in the device's metadata object. min length 1 · max length 64 |
namestring | Label shown instead of the raw key. min length 1 · max length 64 |
descriptionstringoptional | What the property means. |
typeenum | Kind of value behind the key: number, string, boolean or datetime — the JSON kinds metadata accepts, not the wire types of a device property.Possible values: number, string, boolean, datetime |
enumarrayoptional | Named values, unique by value — lets a UI offer a dropdown instead of a free-text field. |
valuestring | The raw value as it is stored in the metadata. min length 1 |
namestring | Label shown for the value. min length 1 · max length 64 |
descriptionstringoptional | What the value means. |
i18ndictionaryoptional | Translations of the label, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
rangeMinnumberoptional | Minimum (inclusive); numeric properties only. |
rangeMaxnumberoptional | Maximum (exclusive); numeric properties only. |
stepnumberoptional | Step an input field should offer; numeric properties only. |
unitstringoptional | Unit label, e.g. m. |
groupstringoptional | Groups properties into subjects for presentation. |
tagbooleanoptional | UI hint: render the value as a tag rather than a plain field. |
i18ndictionaryoptional | Translations of name, description and group, keyed by locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
groupstringoptional | Translated group label. |
i18ndictionaryoptional | Translations of the schema's name and description, keyed by locale; a field left out falls back to the untranslated value. The whole map is served — the consumer picks the locale. |
namestringoptional | Translated name. min length 1 · max length 64 |
descriptionstringoptional | Translated description. |
idstring | Resource id: Base58 (9–10 characters) or a 16-character Crockford snowflake. Not an RFC 4122 UUID. Pattern: ^[0-9A-HJ-NP-Za-km-z]{9,16}$ |
resourceIdentifierstring | Unique Coldwave resource name (CRN) that identifies a resource |
sharedboolean | Whether this is the tenant's shared schema, which applies to all of its devices. |
serviceIdentifierstringoptional | The service whose metadata this schema describes; absent on the shared schema. 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}$ |
createdBystring | Resource identifier of the entity that created this resource |