Raw schema
{
"type": "object",
"properties": {
"plan": {
"anyOf": [
{
"type": "string",
"pattern": "^baf(?:krei|ybei)[a-z2-7]{52}$"
},
{
"type": "string",
"maxLength": 300,
"format": "uri"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
]
},
"expectedCid": {
"type": "string",
"pattern": "^baf(?:krei|ybei)[a-z2-7]{52}$"
},
"operations": {
"default": [],
"maxItems": 100,
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "add"
},
"design": {
"anyOf": [
{
"type": "string",
"pattern": "^baf(?:krei|ybei)[a-z2-7]{52}$"
},
{
"type": "string",
"maxLength": 300,
"format": "uri"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
]
}
},
"required": [
"type",
"design"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "remove"
},
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"type",
"ref"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "replace"
},
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"design": {
"anyOf": [
{
"type": "string",
"pattern": "^baf(?:krei|ybei)[a-z2-7]{52}$"
},
{
"type": "string",
"maxLength": 300,
"format": "uri"
},
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
]
}
},
"required": [
"type",
"ref",
"design"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "edit"
},
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"edits": {
"minItems": 1,
"maxItems": 200,
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "add"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"value": {}
},
"required": [
"op",
"path",
"value"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "replace"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"value": {}
},
"required": [
"op",
"path",
"value"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "test"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"value": {}
},
"required": [
"op",
"path",
"value"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "remove"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
}
},
"required": [
"op",
"path"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "copy"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"from": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
}
},
"required": [
"op",
"path",
"from"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "move"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"from": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
}
},
"required": [
"op",
"path",
"from"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "transform"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"eastM": {
"type": "number",
"minimum": -100000,
"maximum": 100000
},
"northM": {
"type": "number",
"minimum": -100000,
"maximum": 100000
},
"degrees": {
"description": "Counterclockwise degrees; clockwise is negative.",
"type": "number",
"minimum": -360,
"maximum": 360
},
"scale": {
"type": "number",
"minimum": 0.01,
"maximum": 100
},
"pivot": {
"type": "array",
"prefixItems": [
{
"type": "number",
"minimum": -180,
"maximum": 180
},
{
"type": "number",
"minimum": -85,
"maximum": 85
}
],
"items": false,
"minItems": 2,
"maxItems": 2
}
},
"required": [
"op",
"path"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "union"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"from": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
}
},
"required": [
"op",
"path",
"from"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "difference"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"from": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
}
},
"required": [
"op",
"path",
"from"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "intersection"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"from": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
}
},
"required": [
"op",
"path",
"from"
]
},
{
"type": "object",
"properties": {
"op": {
"type": "string",
"const": "buffer"
},
"path": {
"type": "string",
"maxLength": 1000,
"description": "RFC 6901 JSON Pointer into canonical authored content; /geometry/buildings/0/properties/height for example."
},
"metres": {
"type": "number",
"minimum": -1000,
"maximum": 1000
}
},
"required": [
"op",
"path",
"metres"
]
}
]
}
}
},
"required": [
"type",
"ref",
"edits"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "modify"
},
"ref": {
"type": "string",
"minLength": 1,
"maxLength": 200
},
"changes": {
"minItems": 1,
"maxItems": 20,
"type": "array",
"items": {
"oneOf": [
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "retitle"
},
"value": {
"type": "string",
"maxLength": 200
}
},
"required": [
"type",
"value"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "redescribe"
},
"value": {
"type": "string",
"maxLength": 2000
}
},
"required": [
"type",
"value"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "widen"
},
"metres": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 100
},
"side": {
"type": "string",
"enum": [
"north",
"south",
"east",
"west",
"both"
]
}
},
"required": [
"type",
"metres",
"side"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "set_profile"
},
"preset": {
"type": "string",
"enum": [
"2+2",
"1+1",
"1+1 with cycle lanes"
]
},
"lanes": {
"minItems": 1,
"maxItems": 32,
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string"
},
"width": {
"type": "number",
"minimum": 0.25,
"maximum": 20
},
"direction": {
"type": "string",
"enum": [
"forward",
"backward",
"both"
]
},
"landscape": {
"type": "string",
"enum": [
"trees",
"grass"
]
}
},
"required": [
"type",
"width"
]
}
}
},
"required": [
"type"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "shift"
},
"metres": {
"type": "number",
"minimum": 0,
"maximum": 100
},
"toward": {
"type": "string",
"enum": [
"north",
"south",
"east",
"west"
]
}
},
"required": [
"type",
"metres",
"toward"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "add_lane"
},
"kind": {
"type": "string"
},
"side": {
"type": "string",
"enum": [
"north",
"south",
"east",
"west"
]
}
},
"required": [
"type",
"kind",
"side"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "remove_lane"
},
"index": {
"type": "integer",
"minimum": 0,
"maximum": 31
}
},
"required": [
"type",
"index"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "set_floors"
},
"value": {
"type": "integer",
"minimum": 1,
"maximum": 200
},
"buildingIndex": {
"description": "One building index in this immutable design; omit to edit every building.",
"type": "integer",
"minimum": 0,
"maximum": 999
},
"floorHeightM": {
"type": "number",
"minimum": 0.5,
"maximum": 20
}
},
"required": [
"type",
"value"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "set_height"
},
"value": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 800
},
"buildingIndex": {
"description": "One building index in this immutable design; omit to edit every building.",
"type": "integer",
"minimum": 0,
"maximum": 999
},
"floorHeightM": {
"type": "number",
"minimum": 0.5,
"maximum": 20
}
},
"required": [
"type",
"value"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "fit_to_permitted"
},
"planningSource": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"type",
"planningSource"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "set_use"
},
"value": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"buildingIndex": {
"description": "One building index in this immutable design; omit to edit every building.",
"type": "integer",
"minimum": 0,
"maximum": 999
}
},
"required": [
"type",
"value"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "set_kind"
},
"value": {
"type": "string",
"enum": [
"park",
"square",
"lake"
]
}
},
"required": [
"type",
"value"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "rotate"
},
"degrees": {
"type": "number",
"minimum": -360,
"maximum": 360
},
"buildingIndex": {
"description": "One building index in this immutable design; omit to edit every building.",
"type": "integer",
"minimum": 0,
"maximum": 999
}
},
"required": [
"type",
"degrees"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "move"
},
"eastM": {
"type": "number",
"minimum": -100,
"maximum": 100
},
"northM": {
"type": "number",
"minimum": -100,
"maximum": 100
},
"buildingIndex": {
"description": "One building index in this immutable design; omit to edit every building.",
"type": "integer",
"minimum": 0,
"maximum": 999
}
},
"required": [
"type",
"eastM",
"northM"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "remove_building"
},
"buildingIndex": {
"type": "integer",
"minimum": 0,
"maximum": 999
}
},
"required": [
"type",
"buildingIndex"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "add_trees"
},
"count": {
"type": "integer",
"minimum": 1,
"maximum": 500
},
"spacingM": {
"type": "number",
"minimum": 1,
"maximum": 30
}
},
"required": [
"type",
"count"
]
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"const": "set_tree_count"
},
"count": {
"type": "integer",
"minimum": 0,
"maximum": 500
},
"spacingM": {
"type": "number",
"minimum": 1,
"maximum": 30
}
},
"required": [
"type",
"count"
]
}
]
}
}
},
"required": [
"type",
"ref",
"changes"
]
}
]
}
},
"terms": {
"default": {},
"type": "object",
"properties": {
"rights": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"allocations": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
},
"money": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"title": {
"anyOf": [
{
"type": "string",
"maxLength": 200
},
{
"type": "null"
}
]
},
"author": {
"anyOf": [
{
"type": "string",
"maxLength": 100
},
{
"type": "null"
}
]
},
"sponsor": {
"type": [
"string",
"null"
]
},
"deadline": {
"anyOf": [
{
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
},
{
"type": "null"
}
]
},
"rule": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
}
}
}
},
"required": [
"plan",
"expectedCid"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}