openapi: 3.0.1
info:
  title: robot_gateway
  description: API for robot to send vitals up to dispatch.
  contact:
    name: Infra
    url: https://git.zooxlabs.com/zooxco/driving
    email: infrateam@zoox.com
  version: 1.14.0
servers:
  - url: /v1/
paths:
  /robots/{robotId}/vitals:
    put:
      summary: Update Robot vitals (location, battery, etc).
      operationId: updateVitals
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: The vitals report from the robot.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Vitals"
        required: true
      responses:
        204:
          description: Update was accepted.
          content: {}
        400:
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        403:
          description: Invalid timestamp.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: vitals
  /robots/{robotId}/mission:
    get:
      summary: Get current mission. (deprecated)
      operationId: getMission
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      responses:
        200:
          description: The mission.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Mission"
        404:
          description: Robot not found.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
    put:
      summary: Update mission.
      operationId: updateMission
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: A robot-originated update for a trip-mission.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TripUpdate"
        required: true
      responses:
        200:
          description: Mission successfully updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Mission"
        400:
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        404:
          description: No current mission to update.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        409:
          description: Mission update conflicts, could be caused by DB update conflicts.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: missionUpdate
  /robots/{robotId}/mission-queue:
    get:
      summary: Get list of missions queued at the robot
      operationId: getMissionQueue
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
        - name: only_active
          in: query
          description: Query parameter to be used to filter only active missions
          schema:
            type: boolean
            default: true
      responses:
        200:
          description: List of missions that are queued at the robot.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MissionList"
        404:
          description: Robot with ID is not found.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
  /robots/{robotId}/missions/:
    get:
      summary: Get list of missions assigned to the robot
      operationId: getMissions
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
        - name: limit
          in: query
          description: Number of records to limit
          schema:
            minimum: 1
            type: integer
            default: 1
        - name: offset
          in: query
          description:
            Offset for fetching records in batches. Only returns records
            higher than offset. Default 0 (all).
          schema:
            minimum: 0
            type: integer
            default: 0
        - name: only_active
          in: query
          description: Query parameter to be used to filter only active trips
          schema:
            type: boolean
            default: true
      responses:
        200:
          description: List of missions that are assigned to robot.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MissionList"
        404:
          description: Robot with ID is not found.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
    post:
      summary: Create a mission
      operationId: createMission
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description:
          A robot-originated mission request to be created only if there
          is no existing mission for the robot
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SingleStopMission"
        required: true
      responses:
        201:
          description: Mission successfully created.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Mission"
        400:
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        409:
          description: A mission already exists for the robot
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: mission
  /robots/{robotId}/missions/{missionId}:
    put:
      summary: Update mission.
      operationId: updateMissionById
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
        - name: missionId
          in: path
          description: Id of the mission.
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        description: A robot-originated update for a trip-mission.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/TripUpdate"
        required: true
      responses:
        200:
          description: Mission successfully updated.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Mission"
        400:
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        404:
          description: No current mission to update.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: missionUpdate
  /robots/{robotId}/missionAvailability:
    put:
      summary: Update availability. (deprecated)
      operationId: updateMissionAvailability
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: Describes whether the robot is available.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MissionAvailability"
        required: true
      responses:
        204:
          description: Availability successfully updated.
          content: {}
        400:
          description: Invalid input.
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        404:
          description: Robot not found.
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: missionAvailability
  /robots/{robotId}/mission-availability:
    put:
      summary: Update availability.
      operationId: updateMissionAvailabilityV1
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: Describes whether the robot is available.
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MissionAvailability"
        required: true
      responses:
        204:
          description: Availability successfully updated.
          content: {}
        400:
          description: Invalid input.
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        404:
          description: Robot not found.
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            "*/*":
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: missionAvailability
  /robots/{robotId}/mission-request:
    post:
      summary: Request a utility mission like a random p2p mission
      operationId: requestMission
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: Mission request
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/MissionRequest"
        required: true
      responses:
        200:
          description: Operation was successful
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Mission"
        403:
          description: Operation was forbidden
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Some internal server error has occurred so retry it again
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: missionRequest
  /robots/{robotId}/logs:
    post:
      summary: Create a log message
      operationId: postLogEntries
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: Log messages
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LogEntryList"
        required: true
      responses:
        201:
          description: Log messages successfully created.
          content: {}
        400:
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: logEntries
  /robots/{robotId}/telemetry-data:
    put:
      summary: Update the telemetry data sent from the vehicle
      operationId: updateTelemetryData
      parameters:
        - name: robotId
          in: path
          description: Id of the robot.
          required: true
          schema:
            type: string
      requestBody:
        description: Telemetry data that the robot is sending
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/LowBandwidthTelemetryList"
        required: true
      responses:
        204:
          description: Operation was successful
          content: {}
        400:
          description: Invalid input.
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        404:
          description: Robot ID not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
        500:
          description: Some internal server error has occurred so retry it again
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
      x-codegen-request-body-name: telemetry_data
  /utility-mission-types:
    get:
      summary:
        For Coredash to get the mission types for the utility mission that
        can be requested from the vehicle
      operationId: getUtilityMissionTypes
      responses:
        200:
          description: Operation was successful
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UtilityMissionTypeList"
        500:
          description: Some internal server error has occurred so retry it again
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorInfo"
components:
  schemas:
    MegaMission:
      type: object
      properties:
        id:
          type: string
          description: Id of the mission.
          format: uuid
          readOnly: true
        missionType:
          type: string
          description: Type of the mission.
        predefinedMissionId:
              type: string
              description:
                Predefined mission id stored on the vehicles as the MaestroMission
                model.
        riderInteraction:
            type: boolean
            description:
              Whether the mission needs rider interaction like ingress
              and egress
        etaSeconds:
              type: number
              description:
                The ETA to the next stopping point, e.g. the pickup or drop
                off point.
              format: double
              readOnly: true
        status:
          $ref: "#/components/schemas/TripStatus"
        requestedPickup:
          $ref: "#/components/schemas/Location"
        requestedDestination:
          $ref: "#/components/schemas/Location"
        requestedMidpoints:
          type: array
          description:
            Points the user would like the robot to drive through when
            going from Pickup to Destination
          items:
            $ref: "#/components/schemas/Location"
        rider:
          $ref: "#/components/schemas/Rider"
      required:
        - missionType
    Mission:
      required:
        - missionType
      type: object
      properties:
        id:
          type: string
          description: Id of the mission.
          format: uuid
          readOnly: true
        missionType:
          type: string
          description: Type of the mission.
      description:
        Describes a mission. Top-level/abstract type for more specific
        missions.
    PredefinedMission:
      description: A predefined mission stored on vehicles as planner dispatch commands.
      allOf:
        - $ref: "#/components/schemas/Mission"
        - required:
            - predefinedMissionId
          type: object
          properties:
            predefinedMissionId:
              type: string
              description:
                Predefined mission id stored on the vehicles as the MaestroMission
                model.
            riderInteraction:
              type: boolean
              description:
                Whether the mission needs rider interaction like ingress
                and egress
    UtilityMission:
      description: A utility mission like random P2P mission.
      allOf:
        - $ref: "#/components/schemas/Mission"
        - required:
            - requestedDestination
            - requestedPickup
            - riderInteraction
            - status
          type: object
          properties:
            etaSeconds:
              type: number
              description:
                The ETA to the next stopping point, e.g. the pickup or drop
                off point.
              format: double
              readOnly: true
            status:
              $ref: "#/components/schemas/TripStatus"
            requestedPickup:
              $ref: "#/components/schemas/Location"
            requestedDestination:
              $ref: "#/components/schemas/Location"
            requestedMidpoints:
              type: array
              description:
                Points the user would like the robot to drive through when
                going from Pickup to Destination
              items:
                $ref: "#/components/schemas/Location"
            riderInteraction:
              type: boolean
              description:
                Whether the mission needs rider interaction like ingress
                and egress
              readOnly: true
    PrivateTripMission:
      description:
        PrivateTripMission is a subclass of UtilityMission. But for swagger
        spec 2.0 and bravado, if we derive trip mission from utility mission, the
        bravado won't recognize that Mission is the grandfather of PrivateTripMission.
        So we have to make it a subclass of Mission here. Hopefully, swagger spec
        3.0 and the swagger codegen can solve this problem.
      # allOf:
      # - $ref: '#/components/schemas/Mission'
      type: object
      required:
        - requestedDestination
        - requestedPickup
        - rider
        - riderInteraction
        - status
      properties:
        etaSeconds:
          type: number
          description:
            The ETA to the next stopping point, e.g. the pickup or drop
            off point.
          format: double
          readOnly: true
        status:
          $ref: "#/components/schemas/TripStatus"
        requestedPickup:
          $ref: "#/components/schemas/Location"
        requestedDestination:
          $ref: "#/components/schemas/Location"
        requestedMidpoints:
          type: array
          description:
            Points the user would like the robot to drive through when
            going from Pickup to Destination
          items:
            $ref: "#/components/schemas/Location"
        riderInteraction:
          type: boolean
          description: Whether the mission needs rider interaction like ingress
            and egress
          readOnly: true
        rider:
          $ref: "#/components/schemas/Rider"
    IdleMission:
      description:
        Mission where the robot should pull over somewhere and wait for
        further orders.
      # allOf:
      # - $ref: '#/components/schemas/Mission'
      type: object
      required:
        - status
      properties:
        status:
          type: string
          enum:
            - DRIVING_TO_IDLE_SPOT
            - IDLING
    SingleStopMission:
      description: A mission which does not include a pickup
      allOf:
        - $ref: "#/components/schemas/Mission"
        - required:
            - requestedDestination
            - status
          type: object
          properties:
            requestedDestination:
              $ref: "#/components/schemas/Location"
            requestedMidpoints:
              type: array
              description: Points the robot should drive through on the way to destination
              items:
                $ref: "#/components/schemas/Location"
            status:
              $ref: "#/components/schemas/TripStatus"
    MissionList:
      required:
        - items
      type: object
      properties:
        metaData:
          $ref: "#/components/schemas/ListMetaData"
        items:
          type: array
          items:
            $ref: "#/components/schemas/MegaMission"
            # oneOf:
            #   # - $ref: "#/components/schemas/PredefinedMission"
            #   # - $ref: '#/components/schemas/UtilityMission'
            #   - $ref: '#/components/schemas/PrivateTripMission'
            #   # - $ref: '#/components/schemas/SingleStopMission'
            #   - $ref: "#/components/schemas/IdleMission"
            # discriminator:
            #   propertyName: missionType
      description: Provides a list resource for missions
    TripUpdate:
      type: object
      properties:
        status:
          $ref: "#/components/schemas/TripStatus"
        route:
          $ref: "#/components/schemas/Route"
      description: An update from the Robot on a trip's status and/or current route.
    TripStatus:
      type: string
      description: Possible states of a trip Mission. https://confluence.zooxlabs.com/confluence/display/INFRA/Mission+Service
      enum:
        - SCHEDULED
        - DRIVING_TO_PICKUP
        - FORCING_AT_PICKUP
        - AT_PICKUP
        - AUTHENTICATING
        - AUTHENTICATED
        - DOOR_OPEN_REQUESTED
        - DOOR_OPEN
        - INGRESS_COMPLETED
        - DRIVING_TO_DROP_OFF
        - FORCING_AT_DROP_OFF
        - AT_STOP
        - AT_DROP_OFF
        - COMPLETED
        - CANCELLED
        - IDLING
    MissionAvailability:
      required:
        - available
      type: object
      properties:
        available:
          type: boolean
      description: Signal from Robot whether it can accept missions.
    Vitals:
      required:
        - epochTimeMs
      type: object
      properties:
        epochTimeMs:
          type: number
          description: Robot time at which these vitals were measured.
          format: integer
        position:
          $ref: "#/components/schemas/Position"
        velocity:
          $ref: "#/components/schemas/Velocity"
        batteryPercent:
          maximum: 1
          minimum: 0
          type: number
          description: Battery level percentage.
          format: double
        route:
          $ref: "#/components/schemas/Route"
        driveMode:
          $ref: "#/components/schemas/DriveMode"
        nogoState:
          $ref: "#/components/schemas/NogoState"
        teleopEngaged:
          type: boolean
          description: True if the robot has a teleoperator engaged with it
        teleopNotifications:
          type: array
          description: List of notifications generated by teleops
          items:
            $ref: "#/components/schemas/TeleopNotification"
        zrnMinimumReleaseStatus:
          $ref: "#/components/schemas/ZrnMinimumReleaseStatus"
      description: Various Robot information to report.
    Route:
      type: object
      properties:
        points:
          type: string
          description: A polyline (precision=6) of the robot's currently planned route.
          nullable: true
        pointsPassed:
          type: number
          description:
            How many of the points of the passed route have been passed
            by the robot.
          format: integer
        costSeconds:
          type: number
          description: The total cost to drive the full path.
          format: double
      description: A list of points describing a route the robot takes.
    Velocity:
      type: object
      properties:
        northMetersSecond:
          type: number
          format: double
        eastMetersSecond:
          type: number
          format: double
        upMetersSecond:
          type: number
          format: double
        rollDegreesSecond:
          type: number
          format: double
        pitchDegreesSecond:
          type: number
          format: double
        yawDegreesSecond:
          type: number
          format: double
      description: Velocities of an object.
    Position:
      required:
        - location
      type: object
      properties:
        location:
          $ref: "#/components/schemas/Location"
        orientation:
          $ref: "#/components/schemas/Orientation"
      description: The position of an object including it's orientation.
    Orientation:
      required:
        - pitchDegrees
        - rollDegrees
        - yawDegrees
      type: object
      properties:
        rollDegrees:
          type: number
          format: double
        pitchDegrees:
          type: number
          format: double
        yawDegrees:
          type: number
          format: double
      description: What direction an object is pointing in.
    Location:
      required:
        - latitude
        - longitude
      type: object
      properties:
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
        altitudeMeters:
          type: number
          format: double
        displayDescription:
          type: string
          description:
            A text description of this Location. Could be an address, '1149
            Chess Dr, Foster City, CA` or `Zoox HQ` or `Work`. Fully managed by the
            client.
        serviceAreaPoiId:
          type: integer
          description:
            ZRN service area point of interest id of the location as defined
            in https://git.zooxlabs.com/zooxco/driving/blob/master/vehicle/zrn/sf_service_area.pbtxt#L183
          format: int64
      description: A location as a latitude/longitude/altitude.
    Rider:
      required:
        - email
        - firstName
      type: object
      properties:
        id:
          type: string
          description: Unique string to be used for identifying the rider
          format: uuid
          readOnly: true
        email:
          type: string
          description: Email address of the rider
          format: email
        firstName:
          type: string
          description: First name of the rider
        lastName:
          type: string
          description: Last Name of the rider
        phoneNumber:
          type: string
          description: Phone number of the rider
        hailMode:
          type: string
          description: Hail mode of the rider
          enum:
            - P2P
            - CONTINUOUS
            - FIXED
            - VH6_DEMO_CHESS
      description: Resource representing the rider information
    ListMetaData:
      required:
        - direction
        - limit
        - offset
        - orderBy
        - totalCount
      type: object
      properties:
        limit:
          type: integer
          description: Max number of resources provided in the list
        offset:
          type: integer
          description: Offset from which the resources are fetched
        orderBy:
          type: string
          description: Resource's property on which resources are sorted
        direction:
          type: string
          description: Direction of the sorting order
          enum:
            - ASCENDING
            - DESCENDING
        totalCount:
          type: integer
          description: Total number of resources available
      description: Provides the meta data for various list resources
    DriveMode:
      type: string
      description: Possible drive modes the robot can be in
      enum:
        - UNKNOWN
        - FAULT
        - MANUAL
        - ACC
        - AUTONOMOUS
        - ROVE
    NogoState:
      type: string
      description: Possible states of a robot's ai_monitor
      enum:
        - GO
        - NOGO
        - NOGO_DISENGAGED
        - CAT
    TeleopNotification:
      type: object
      properties:
        priority:
          $ref: "#/components/schemas/TeleopPriority"
        category:
          $ref: "#/components/schemas/TeleopCategory"
      description: A notification from teleop
    TeleopPriority:
      type: string
      description: Level of priority from a teleop notification
      enum:
        - NONE
        - LOW
        - MEDIUM
        - HIGH
        - CRITICAL
    TeleopCategory:
      type: string
      description: Category of a teleop notification
      enum:
        - NONE
        - SWO
        - GEO
        - CZ
        - CZ_ADV
        - EMERGENCY
        - FLAGGER
        - TRAFFIC_LIGHT
        - PATH
        - HEALTH
        - ENVIRONMENT
        - RIDER
        - COLLISION
    ErrorInfo:
      type: object
      properties:
        statusCode:
          type: integer
          description: Error code.
          readOnly: true
        message:
          type: string
          description: Message describing the error.
          readOnly: true
      description: Resource representing the error information
    LogEntry:
      type: object
      description: A log entry
    LogEntryList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: "#/components/schemas/LogEntry"
      description: A list of log entries.
    ZrnMinimumReleaseStatus:
      type: string
      description:
        Minimum ZRN release status that is supported by the on-vehicle
        planner
      enum:
        - kAlpha
        - kBeta
        - kReleased
        - kPointToPoint
        - kZrnReleaseStatusUnknown
    LowBandwidthTelemetryData:
      type: object
      description: An object of custom telemetry data
    LowBandwidthTelemetryList:
      type: object
      properties:
        items:
          type: array
          items:
            $ref: "#/components/schemas/LowBandwidthTelemetryData"
      description: A list of custom telemetry data objects
    UtilityMissionType:
      type: string
      description: Type of the utility mission
      enum:
        - RANDOM_DESTINATION_SF_EXTENDED
        - RANDOM_ROUTE_SF_EXTENDED
        - RANDOM_DESTINATION_SLAC
        - RANDOM_ROUTE_SLAC
    MissionRequest:
      type: object
      properties:
        missionType:
          $ref: "#/components/schemas/UtilityMissionType"
    UtilityMissionTypeList:
      required:
        - items
      type: object
      properties:
        items:
          type: array
          items:
            $ref: "#/components/schemas/UtilityMissionType"
      description: Provides a list resource for mission types
    CancelReason:
      type: string
      description: Reason for the current status
      enum:
        - USER_CANCELLED
        - ROBOT_CANCELLED
        - ROBOT_UNAVAILABLE
        - ADMIN_CANCELLED
        - STALE
  parameters:
    RobotId:
      name: robotId
      in: path
      description: Id of the robot.
      required: true
      schema:
        type: string
    MissionId:
      name: missionId
      in: path
      description: Id of the mission.
      required: true
      schema:
        type: string
        format: uuid
    Limit:
      name: limit
      in: query
      description: Number of records to limit
      schema:
        minimum: 1
        type: integer
        default: 1
    Offset:
      name: offset
      in: query
      description:
        Offset for fetching records in batches. Only returns records higher
        than offset. Default 0 (all).
      schema:
        minimum: 0
        type: integer
        default: 0
