Update a location type
const url = 'https://example.com/api/v1/location-types/example';const options = { method: 'PATCH', headers: {'Content-Type': 'application/json'}, body: '{"allowed_parent_types":["example"],"icon":"example","label":"example","label_rule":"example","name_rule":{"bare_first":true,"stem":"example"},"update_mask":["example"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://example.com/api/v1/location-types/example \ --header 'Content-Type: application/json' \ --data '{ "allowed_parent_types": [ "example" ], "icon": "example", "label": "example", "label_rule": "example", "name_rule": { "bare_first": true, "stem": "example" }, "update_mask": [ "example" ] }'Patches a location_type’s label, icon, allowed parents, label_rule or name_rule. An unparseable label_rule (or a name_rule that cannot mint a legal name) is a 422 at rule-edit time, never a broken row at create time, and setting a label rule restamps nothing on its own: apply it with /locations:recomputeLabels after seeing the blast radius with :previewLabels. A shipped (official) row is never written: the patch FORKS it, storing your version over the shipped one, and the response comes back with forked=true under the same id. :restore discards the fork. Gated by location_type:update.
Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Request Body required
Section titled “Request Body required ”object
A URL to the JSON Schema for this object.
Replaces the allowed-parent set; omit to leave unchanged, [] to clear back to unconstrained
A new glyph key; the console falls back to map-pin when empty
A new operator-facing label
A new label template for locations of this type; omit to leave unchanged, "" to clear back to the global rule. Refused (422) if it does not compile. Editing it does not restamp anything: apply it with /locations:recomputeLabels, having seen the blast radius with :previewLabels
A new name rule for locations of this type; omit to leave unchanged, or name name_rule in update_mask with no rule here to CLEAR it back to operator-named. Refused (422) if it cannot mint a legal name. Setting it renames nothing that already exists: it decides how the NEXT nameless create, :resetName, move or reclassify names a row
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
Which fields this write changes (AIP-134). Omit it and the fields present in the body change and nothing else; name a field here and it is written even when the body leaves it empty, which is how a field is CLEARED (name_rule back to operator-named); send [”*”] for full replacement. A field this resource does not patch is a 422 naming it
Responses
Section titled “ Responses ”OK
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"}