{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "color": {
      "description": "RGB color with 8-bit channels.",
      "properties": {
        "blue": {
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "green": {
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        },
        "red": {
          "maximum": 255,
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "red",
        "green",
        "blue"
      ],
      "type": "object"
    },
    "floor": {
      "properties": {
        "surface": {
          "ref": "#surface",
          "type": "ref"
        }
      },
      "required": [
        "surface"
      ],
      "type": "object"
    },
    "furnishing": {
      "description": "A placed object in the room.",
      "properties": {
        "position": {
          "description": "Position [x, y, z] in millimeters.",
          "items": {
            "type": "integer"
          },
          "maxLength": 3,
          "minLength": 3,
          "type": "array"
        },
        "roomObject": {
          "description": "Strong reference to a blue.atroom.room.object record.",
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "rotation": {
          "description": "Euler rotation [x, y, z] in degrees.",
          "items": {
            "type": "integer"
          },
          "maxLength": 3,
          "minLength": 3,
          "type": "array"
        }
      },
      "required": [
        "roomObject",
        "position",
        "rotation"
      ],
      "type": "object"
    },
    "main": {
      "description": "A room layout with placed objects.",
      "key": "any",
      "record": {
        "properties": {
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "floor": {
            "ref": "#floor",
            "type": "ref"
          },
          "furnishings": {
            "items": {
              "ref": "#furnishing",
              "type": "ref"
            },
            "maxLength": 100,
            "type": "array"
          },
          "size": {
            "description": "Room size in millimeters (square room).",
            "maximum": 20000,
            "minimum": 1000,
            "type": "integer"
          },
          "wall": {
            "ref": "#wall",
            "type": "ref"
          }
        },
        "required": [
          "size",
          "floor",
          "wall",
          "furnishings",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "surface": {
      "properties": {
        "color": {
          "ref": "#color",
          "type": "ref"
        },
        "texture": {
          "accept": [
            "image/png",
            "image/jpeg",
            "image/webp"
          ],
          "description": "Texture image.",
          "maxSize": 1048576,
          "type": "blob"
        },
        "textureTiling": {
          "description": "Texture tiling [u, v].",
          "items": {
            "type": "integer"
          },
          "maxLength": 2,
          "minLength": 2,
          "type": "array"
        }
      },
      "required": [
        "color"
      ],
      "type": "object"
    },
    "wall": {
      "description": "Wall configuration.",
      "properties": {
        "height": {
          "description": "Wall height in millimeters.",
          "type": "integer"
        },
        "surface": {
          "ref": "#surface",
          "type": "ref"
        },
        "thickness": {
          "description": "Wall thickness in millimeters.",
          "type": "integer"
        }
      },
      "required": [
        "height",
        "thickness",
        "surface"
      ],
      "type": "object"
    }
  },
  "id": "blue.atroom.room.layout",
  "lexicon": 1
}
