Create a location type
const url = 'https://example.com/api/v1/location-types';const options = { method: 'POST', headers: {'Content-Type': 'application/json'}, body: '{"allowed_parent_types":["example"],"icon":"example","label":"example","label_rule":"example","name":"example","name_rule":{"bare_first":true,"stem":"example"}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/location-types \ --header 'Content-Type: application/json' \ --data '{ "allowed_parent_types": [ "example" ], "icon": "example", "label": "example", "label_rule": "example", "name": "example", "name_rule": { "bare_first": true, "stem": "example" } }'Creates a custom (non-official) location_type, optionally with the label_rule locations of that type get. An unparseable rule is a 422. Gated by location_type:create.
Request Body required
Section titled “Request Body required ”object
A URL to the JSON Schema for this object.
Location_type names and/or the reserved root sentinel this type may be placed under; empty means unconstrained
A glyph key; the console falls back to map-pin when empty
What an operator reads in pickers and lists
The label template locations of this type get, a Go text/template over the location data map; omit to fall back to the global rule. Refused (422) if it does not compile
The globally unique name (e.g. wing); “root” is reserved
How the platform NAMES locations of this type; omit to have an operator name every one of them. Refused (422) if it cannot mint a legal name
object
Suppress the ordinal on the first of this stem in a parent, so the only wing there is wing and the second is wing-2. Ignored when stem is empty.
The generated name’s prefix (wing gives wing, wing-2); empty makes the type positional, so the name is the ordinal alone (1, 2, 3). The 90-character ceiling is the mint’s: 90 plus the widest ordinal is exactly the 100-character name cap, so every stem this admits mints legally at both ends of its output space
Responses
Section titled “ Responses ”Created
object
A URL to the JSON Schema for this object.
True when this shipped row carries changes of yours overriding it. Restore discards them
The location type’s uuid, the stable handle that survives a rename
The label template locations of this type get; empty falls back to the global rule for locations
The name an operator reads and types; renameable
How the platform NAMES locations of this type; absent means an operator names every one of them
object
True when the first of this stem in a parent carries no ordinal
The first two names this rule mints in one parent, produced by the same mint a create allocates from: the first shows whether the first of a stem carries a number, the second shows the shape every later one takes. Read these rather than rebuilding the shape, which is what keeps one definition of a generated name
The generated name’s prefix; empty makes the type positional
True for a row this release ships. A shipped row is never written by an operator: an edit forks it
Example
{ "$schema": "/api/v1/schemas/LocationTypeBody.json"}default
Section titled “default ”Error
object
A URL to the JSON Schema for this object.
A human-readable explanation specific to this occurrence of the problem.
Optional list of individual error details
object
Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’
Error message text
The value at the given location
A URI reference that identifies the specific occurrence of the problem.
HTTP status code
A short, human-readable summary of the problem type. This value should not change between occurrences of the error.
A URI reference to human-readable documentation for the error.
Example
{ "$schema": "/api/v1/schemas/ErrorModel.json", "detail": "Property foo is required but is missing.", "instance": "https://example.com/error-log/abc123", "status": 400, "title": "Bad Request", "type": "about:blank"}