{
  "title": "foxglove.SceneEntity",
  "description": "A visual element in a 3D scene. An entity may be composed of multiple primitives which all share the same frame of reference.",
  "$comment": "Generated by https://github.com/foxglove/foxglove-sdk",
  "type": "object",
  "properties": {
    "timestamp": {
      "type": "object",
      "title": "time",
      "properties": {
        "sec": {
          "type": "integer",
          "minimum": 0
        },
        "nsec": {
          "type": "integer",
          "minimum": 0,
          "maximum": 999999999
        }
      },
      "description": "Timestamp of the entity"
    },
    "frame_id": {
      "type": "string",
      "description": "Frame of reference"
    },
    "id": {
      "type": "string",
      "description": "Identifier for the entity. A entity will replace any prior entity on the same topic with the same `id`."
    },
    "lifetime": {
      "type": "object",
      "title": "duration",
      "properties": {
        "sec": {
          "type": "integer"
        },
        "nsec": {
          "type": "integer",
          "minimum": 0,
          "maximum": 999999999
        }
      },
      "description": "Length of time (relative to `timestamp`) after which the entity should be automatically removed. Zero value indicates the entity should remain visible until it is replaced or deleted."
    },
    "frame_locked": {
      "type": "boolean",
      "description": "False indicates the entity should keep its location in the fixed frame until a new entity is published. True indicates the entity should follow the frame specified in `frame_id` as it moves relative to the fixed frame when new transform messages are received."
    },
    "metadata": {
      "type": "array",
      "items": {
        "title": "foxglove.KeyValuePair",
        "description": "A key with its associated value",
        "type": "object",
        "properties": {
          "key": {
            "type": "string",
            "description": "Key"
          },
          "value": {
            "type": "string",
            "description": "Value"
          }
        },
        "required": [
          "key",
          "value"
        ]
      },
      "description": "Additional user-provided metadata associated with the entity. Keys must be unique."
    },
    "arrows": {
      "type": "array",
      "items": {
        "title": "foxglove.ArrowPrimitive",
        "description": "A primitive representing an arrow",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Position of the arrow's tail and orientation of the arrow. Identity orientation means the arrow points in the +x direction.",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "shaft_length": {
            "type": "number",
            "description": "Length of the arrow shaft"
          },
          "shaft_diameter": {
            "type": "number",
            "description": "Diameter of the arrow shaft"
          },
          "head_length": {
            "type": "number",
            "description": "Length of the arrow head"
          },
          "head_diameter": {
            "type": "number",
            "description": "Diameter of the arrow head"
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Color of the arrow",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          }
        },
        "required": [
          "pose",
          "shaft_length",
          "shaft_diameter",
          "head_length",
          "head_diameter",
          "color"
        ]
      },
      "description": "Arrow primitives"
    },
    "cubes": {
      "type": "array",
      "items": {
        "title": "foxglove.CubePrimitive",
        "description": "A primitive representing a cube or rectangular prism",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Position of the center of the cube and orientation of the cube",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "size": {
            "title": "foxglove.Vector3",
            "description": "Size of the cube along each axis",
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "description": "x component"
              },
              "y": {
                "type": "number",
                "description": "y component"
              },
              "z": {
                "type": "number",
                "description": "z component"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ]
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Color of the cube",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          }
        },
        "required": [
          "pose",
          "size",
          "color"
        ]
      },
      "description": "Cube primitives"
    },
    "spheres": {
      "type": "array",
      "items": {
        "title": "foxglove.SpherePrimitive",
        "description": "A primitive representing a sphere or ellipsoid",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Position of the center of the sphere and orientation of the sphere",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "size": {
            "title": "foxglove.Vector3",
            "description": "Size (diameter) of the sphere along each axis",
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "description": "x component"
              },
              "y": {
                "type": "number",
                "description": "y component"
              },
              "z": {
                "type": "number",
                "description": "z component"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ]
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Color of the sphere",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          }
        },
        "required": [
          "pose",
          "size",
          "color"
        ]
      },
      "description": "Sphere primitives"
    },
    "cylinders": {
      "type": "array",
      "items": {
        "title": "foxglove.CylinderPrimitive",
        "description": "A primitive representing a cylinder, elliptic cylinder, or truncated cone",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Position of the center of the cylinder and orientation of the cylinder. The flat face(s) are perpendicular to the z-axis.",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "size": {
            "title": "foxglove.Vector3",
            "description": "Size of the cylinder's bounding box",
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "description": "x component"
              },
              "y": {
                "type": "number",
                "description": "y component"
              },
              "z": {
                "type": "number",
                "description": "z component"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ]
          },
          "bottom_scale": {
            "type": "number",
            "description": "0-1, ratio of the diameter of the cylinder's bottom face (min z) to the bottom of the bounding box"
          },
          "top_scale": {
            "type": "number",
            "description": "0-1, ratio of the diameter of the cylinder's top face (max z) to the top of the bounding box"
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Color of the cylinder",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          }
        },
        "required": [
          "pose",
          "size",
          "bottom_scale",
          "top_scale",
          "color"
        ]
      },
      "description": "Cylinder primitives"
    },
    "lines": {
      "type": "array",
      "items": {
        "title": "foxglove.LinePrimitive",
        "description": "A primitive representing a series of points connected by lines",
        "type": "object",
        "properties": {
          "type": {
            "title": "foxglove.LineType",
            "description": "Drawing primitive to use for lines",
            "oneOf": [
              {
                "title": "LINE_STRIP",
                "const": 0,
                "description": "Connected line segments: 0-1, 1-2, ..., (n-1)-n"
              },
              {
                "title": "LINE_LOOP",
                "const": 1,
                "description": "Closed polygon: 0-1, 1-2, ..., (n-1)-n, n-0"
              },
              {
                "title": "LINE_LIST",
                "const": 2,
                "description": "Individual line segments: 0-1, 2-3, 4-5, ..."
              }
            ]
          },
          "pose": {
            "title": "foxglove.Pose",
            "description": "Origin of lines relative to reference frame",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "thickness": {
            "type": "number",
            "description": "Line thickness"
          },
          "scale_invariant": {
            "type": "boolean",
            "description": "Indicates whether `thickness` is a fixed size in screen pixels (true), or specified in world coordinates and scales with distance from the camera (false)"
          },
          "points": {
            "type": "array",
            "items": {
              "title": "foxglove.Point3",
              "description": "A point representing a position in 3D space",
              "type": "object",
              "properties": {
                "x": {
                  "type": "number",
                  "description": "x coordinate position"
                },
                "y": {
                  "type": "number",
                  "description": "y coordinate position"
                },
                "z": {
                  "type": "number",
                  "description": "z coordinate position"
                }
              },
              "required": [
                "x",
                "y",
                "z"
              ]
            },
            "description": "Points along the line"
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Solid color to use for the whole line. Ignored if `colors` is non-empty.",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          },
          "colors": {
            "type": "array",
            "items": {
              "title": "foxglove.Color",
              "description": "A color in RGBA format",
              "type": "object",
              "properties": {
                "r": {
                  "type": "number",
                  "description": "Red value between 0 and 1"
                },
                "g": {
                  "type": "number",
                  "description": "Green value between 0 and 1"
                },
                "b": {
                  "type": "number",
                  "description": "Blue value between 0 and 1"
                },
                "a": {
                  "type": "number",
                  "description": "Alpha value between 0 and 1"
                }
              },
              "required": [
                "r",
                "g",
                "b",
                "a"
              ]
            },
            "description": "Per-point colors (if non-empty, must have the same length as `points`)."
          },
          "indices": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Indices into the `points` and `colors` attribute arrays, which can be used to avoid duplicating attribute data.\n\nIf omitted or empty, indexing will not be used. This default behavior is equivalent to specifying [0, 1, ..., N-1] for the indices (where N is the number of `points` provided)."
          }
        },
        "required": [
          "type",
          "pose",
          "thickness",
          "scale_invariant",
          "points",
          "color",
          "colors",
          "indices"
        ]
      },
      "description": "Line primitives"
    },
    "triangles": {
      "type": "array",
      "items": {
        "title": "foxglove.TriangleListPrimitive",
        "description": "A primitive representing a set of triangles or a surface tiled by triangles",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Origin of triangles relative to reference frame",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "points": {
            "type": "array",
            "items": {
              "title": "foxglove.Point3",
              "description": "A point representing a position in 3D space",
              "type": "object",
              "properties": {
                "x": {
                  "type": "number",
                  "description": "x coordinate position"
                },
                "y": {
                  "type": "number",
                  "description": "y coordinate position"
                },
                "z": {
                  "type": "number",
                  "description": "z coordinate position"
                }
              },
              "required": [
                "x",
                "y",
                "z"
              ]
            },
            "description": "Vertices to use for triangles, interpreted as a list of triples (0-1-2, 3-4-5, ...)"
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Solid color to use for the whole shape. Ignored if `colors` is non-empty.",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          },
          "colors": {
            "type": "array",
            "items": {
              "title": "foxglove.Color",
              "description": "A color in RGBA format",
              "type": "object",
              "properties": {
                "r": {
                  "type": "number",
                  "description": "Red value between 0 and 1"
                },
                "g": {
                  "type": "number",
                  "description": "Green value between 0 and 1"
                },
                "b": {
                  "type": "number",
                  "description": "Blue value between 0 and 1"
                },
                "a": {
                  "type": "number",
                  "description": "Alpha value between 0 and 1"
                }
              },
              "required": [
                "r",
                "g",
                "b",
                "a"
              ]
            },
            "description": "Per-vertex colors (if specified, must have the same length as `points`)."
          },
          "indices": {
            "type": "array",
            "items": {
              "type": "integer",
              "minimum": 0
            },
            "description": "Indices into the `points` and `colors` attribute arrays, which can be used to avoid duplicating attribute data.\n\nIf omitted or empty, indexing will not be used. This default behavior is equivalent to specifying [0, 1, ..., N-1] for the indices (where N is the number of `points` provided)."
          }
        },
        "required": [
          "pose",
          "points",
          "color",
          "colors",
          "indices"
        ]
      },
      "description": "Triangle list primitives"
    },
    "texts": {
      "type": "array",
      "items": {
        "title": "foxglove.TextPrimitive",
        "description": "A primitive representing a text label",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Position of the center of the text box and orientation of the text. Identity orientation means the text is oriented in the xy-plane and flows from -x to +x.",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "billboard": {
            "type": "boolean",
            "description": "Whether the text should respect `pose.orientation` (false) or always face the camera (true)"
          },
          "font_size": {
            "type": "number",
            "description": "Font size (height of one line of text)"
          },
          "scale_invariant": {
            "type": "boolean",
            "description": "Indicates whether `font_size` is a fixed size in screen pixels (true), or specified in world coordinates and scales with distance from the camera (false)"
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Color of the text",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          },
          "text": {
            "type": "string",
            "description": "Text"
          }
        },
        "required": [
          "pose",
          "billboard",
          "font_size",
          "scale_invariant",
          "color",
          "text"
        ]
      },
      "description": "Text primitives"
    },
    "models": {
      "type": "array",
      "items": {
        "title": "foxglove.ModelPrimitive",
        "description": "A primitive representing a 3D model file loaded from an external URL or embedded data",
        "type": "object",
        "properties": {
          "pose": {
            "title": "foxglove.Pose",
            "description": "Origin of model relative to reference frame",
            "type": "object",
            "properties": {
              "position": {
                "title": "foxglove.Vector3",
                "description": "Point denoting position in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x component"
                  },
                  "y": {
                    "type": "number",
                    "description": "y component"
                  },
                  "z": {
                    "type": "number",
                    "description": "z component"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z"
                ]
              },
              "orientation": {
                "title": "foxglove.Quaternion",
                "description": "Quaternion denoting orientation in 3D space",
                "type": "object",
                "properties": {
                  "x": {
                    "type": "number",
                    "description": "x value"
                  },
                  "y": {
                    "type": "number",
                    "description": "y value"
                  },
                  "z": {
                    "type": "number",
                    "description": "z value"
                  },
                  "w": {
                    "type": "number",
                    "description": "w value"
                  }
                },
                "required": [
                  "x",
                  "y",
                  "z",
                  "w"
                ]
              }
            },
            "required": [
              "position",
              "orientation"
            ]
          },
          "scale": {
            "title": "foxglove.Vector3",
            "description": "Scale factor to apply to the model along each axis",
            "type": "object",
            "properties": {
              "x": {
                "type": "number",
                "description": "x component"
              },
              "y": {
                "type": "number",
                "description": "y component"
              },
              "z": {
                "type": "number",
                "description": "z component"
              }
            },
            "required": [
              "x",
              "y",
              "z"
            ]
          },
          "color": {
            "title": "foxglove.Color",
            "description": "Solid color to use for the whole model if `override_color` is true.",
            "type": "object",
            "properties": {
              "r": {
                "type": "number",
                "description": "Red value between 0 and 1"
              },
              "g": {
                "type": "number",
                "description": "Green value between 0 and 1"
              },
              "b": {
                "type": "number",
                "description": "Blue value between 0 and 1"
              },
              "a": {
                "type": "number",
                "description": "Alpha value between 0 and 1"
              }
            },
            "required": [
              "r",
              "g",
              "b",
              "a"
            ]
          },
          "override_color": {
            "type": "boolean",
            "description": "Whether to use the color specified in `color` instead of any materials embedded in the original model."
          },
          "url": {
            "type": "string",
            "description": "URL pointing to model file. One of `url` or `data` should be non-empty."
          },
          "media_type": {
            "type": "string",
            "description": "[Media type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of embedded model (e.g. `model/gltf-binary`). Required if `data` is provided instead of `url`. Overrides the inferred media type if `url` is provided."
          },
          "data": {
            "type": "string",
            "contentEncoding": "base64",
            "description": "Embedded model. One of `url` or `data` should be non-empty. If `data` is non-empty, `media_type` must be set to indicate the type of the data."
          }
        },
        "required": [
          "pose",
          "scale",
          "color",
          "override_color",
          "url",
          "media_type",
          "data"
        ]
      },
      "description": "Model primitives"
    }
  },
  "required": [
    "timestamp",
    "frame_id",
    "id",
    "lifetime",
    "frame_locked",
    "metadata",
    "arrows",
    "cubes",
    "spheres",
    "cylinders",
    "lines",
    "triangles",
    "texts",
    "models"
  ]
}
