Documented here are the core types available to Guru Schemas. You can utilize this in your process or reference code with an export like:

import { Color, Keypoint, Position } from "guru/stdlib";

Core Types

Keypoints

Keypoint is an enumeration of the names of the keypoints which can be found on objects.

[
  "nose",
  "left_eye",
  "right_eye",
  "left_ear",
  "right_ear",
  "left_shoulder",
  "right_shoulder",
  "left_elbow",
  "right_elbow",
  "left_wrist",
  "right_wrist",
  "left_hip",
  "right_hip",
  "left_knee",
  "right_knee",
  "left_ankle",
  "right_ankle",
  "left_heel",
  "right_heel",
  "left_toe",
  "right_toe",
];

Person

/**
 * Represents a detected person in a frame, providing detailed keypoints and their attributes.
 *
 * @typedef {Object} Person
 * @property {string} _id - Unique identifier for the person instance.
 * @property {string} objectType - Type of the object, in this case 'person'.
 * @property {number} timestamp - Timestamp of the frame where the person was detected.
 * @property {Object} boundary - The bounding box of the person (not detailed here).
 * @property {Object} keypoints - Collection of keypoints representing parts of the person's body.
 */

Keypoint

/**
 * Represents a specific keypoint on a person's body part, such as nose or wrist, along with its position and confidence or score.
 *
 * @typedef {Object} Keypoint
 * @property {number} frame_idx - The index of the frame where this keypoint was detected.
 * @property {string} part - The body part that this keypoint represents.
 * @property {Position} position - The x and y coordinates of the keypoint.
 * @property {number} score - The confidence score of the keypoint detection.
 * @property {number} timestamp - Timestamp of the frame where the keypoint was detected.
 */

Box

/**
 * A two-dimensional box, indicating the bounds of something.
 *
 * @typedef {Object} Box
 * @property {Position} top_left - The top-left corner of the box.
 * @property {Position} bottom_right - The bottom-right corner of the box.
 */

Color

/**
 * A color, represented as an RGB value. Valid values for each are >= 0 and <= 255.
 *
 * @typedef {Object} Color
 * @property {number} r - The amount of red in the color.
 * @property {number} g - The amount of green in the color.
 * @property {number} b - The amount of blue in the color.
 */

Position

/**
 * The two-dimensional coordinates indicating the location of something.
 *
 * @typedef {Object} Position
 * @property {number} x - The x coordinate of the position.
 * @property {number} y - The y coordinate of the position.
 * @property {number} confidence - The confidence Guru has of the accuracy of this position. 0.0 implies no confidence, 1.0 implies complete confidence.
 */