Skip to content

Create a location type

POST
/location-types
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.

Media type application/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
allowed_parent_types

Location_type names and/or the reserved root sentinel this type may be placed under; empty means unconstrained

Array<string> | null
icon

A glyph key; the console falls back to map-pin when empty

string
label
required

What an operator reads in pickers and lists

string
>= 1 characters
label_rule

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

string
name
required

The globally unique name (e.g. wing); “root” is reserved

string
>= 1 characters <= 100 characters /^[a-z0-9][a-z0-9-]*$/
name_rule

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
bare_first

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.

boolean
stem
required

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

string
<= 90 characters /^([a-z0-9][a-z0-9-]*)?$/

Created

Media type application/json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
allowed_parent_types
required
Array<string> | null
forked
required

True when this shipped row carries changes of yours overriding it. Restore discards them

boolean
icon
required
string
id
required

The location type’s uuid, the stable handle that survives a rename

string
label
required
string
label_rule

The label template locations of this type get; empty falls back to the global rule for locations

string
name
required

The name an operator reads and types; renameable

string
name_rule

How the platform NAMES locations of this type; absent means an operator names every one of them

object
bare_first

True when the first of this stem in a parent carries no ordinal

boolean
examples
required

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

Array<string> | null
stem
required

The generated name’s prefix; empty makes the type positional

string
official
required

True for a row this release ships. A shipped row is never written by an operator: an edit forks it

boolean
Example
{
"$schema": "/api/v1/schemas/LocationTypeBody.json"
}

Error

Media type application/problem+json
object
$schema

A URL to the JSON Schema for this object.

string format: uri
detail

A human-readable explanation specific to this occurrence of the problem.

string
errors

Optional list of individual error details

Array<object> | null
object
location

Where the error occurred, e.g. ‘body.items[3].tags’ or ‘path.thing-id’

string
message

Error message text

string
value

The value at the given location

instance

A URI reference that identifies the specific occurrence of the problem.

string format: uri
status

HTTP status code

integer format: int64
title

A short, human-readable summary of the problem type. This value should not change between occurrences of the error.

string
type

A URI reference to human-readable documentation for the error.

string format: uri
default: about:blank
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"
}