{
  "title": "foxglove.SceneUpdate",
  "description": "An update to the entities displayed in a 3D scene",
  "$comment": "Generated by https://github.com/foxglove/foxglove-sdk",
  "type": "object",
  "properties": {
    "deletions": {
      "type": "array",
      "items": {
        "title": "foxglove.SceneEntityDeletion",
        "description": "Command to remove previously published entities",
        "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 deletion. Only matching entities earlier than this timestamp will be deleted."
          },
          "type": {
            "title": "foxglove.SceneEntityDeletionType",
            "description": "Type of deletion action to perform",
            "oneOf": [
              {
                "title": "MATCHING_ID",
                "const": 0,
                "description": "Delete the existing entity on the same topic that has the provided `id`"
              },
              {
                "title": "ALL",
                "const": 1,
                "description": "Delete all existing entities on the same topic"
              }
            ]
          },
          "id": {
            "type": "string",
            "description": "Identifier which must match if `type` is `MATCHING_ID`."
          }
        },
        "required": [
          "timestamp",
          "type",
          "id"
        ]
      },
      "description": "Scene entities to delete"
    },
    "entities": {
      "type": "array",
      "items": {
        "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.",
        "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"
        ]
      },
      "description": "Scene entities to add or replace"
    }
  },
  "required": [
    "deletions",
    "entities"
  ]
}
