Skip to main content

Data Models

All IDs in this API are strings in UUID v4 format.

Timestamps are informational only and not guaranteed to be accurate.

All responses are valid JSON.

v1 vs v2 Field Naming: Version 1 responses include a legacy id field that duplicates the primary identifier (e.g., both id and session_id will be present with the same value). Version 2 removes this redundant id field in favor of explicit names like session_id, lane_id, and bay_id.

SessionView

{
"session_id": "string (UUID)",
"lane_id": "string (UUID)",
"group_id": "string (UUID)",
"duration": "integer (minutes)",
"began_at": "string (ISO 8601 timestamp)",
"created_at": "string (ISO 8601 timestamp)",
"minutes_remaining": "number (decimal minutes)",
"enable_purchasing": "boolean"
}
  • began_at and minutes_remaining: Only populated after the session has started. These fields will be absent or null for sessions that have not yet begun.
  • All timestamps are in UTC timezone.
  • v1 only: Includes additional id field (same value as session_id)

BayView

{
"bay_id": "string (UUID)",
"name": "string"
}
  • v1 only: Includes additional id field (same value as bay_id)

GroupView

{
"id": "string (UUID)",
"name": "string"
}

Groups control which shooting programs and training routines are available to a session. Range staff configure groups in the SRA Master screen.

Which group should I use?

  • Most ranges have a single "default" or "public" group that covers standard lane usage
  • Call GET /groups to see what's available—if there's only one, use that
  • If multiple groups exist, coordinate with range staff to determine which group applies to POS-created sessions
  • Once identified, you can hardcode the group ID or let staff select from a dropdown

Tip: Group IDs rarely change, but may be reset if the range reconfigures their system. Cache on startup and refresh daily.

LaneView

{
"lane_id": "string (UUID)",
"bay_id": "string (UUID)",
"readable_name": "string",
"is_accessible": "boolean",
"is_usable": "boolean"
}
  • readable_name: Display name for the lane
  • is_accessible: Whether the lane is ADA/wheelchair-accessible
  • is_usable: If false, the lane has errors that range staff must address via the SRA Control Screen
  • v1 only: Includes additional id field (same value as lane_id)

Error Response

{
"message": "Error description",
"trace_id": "string (UUID)"
}

HTTP Status Codes

CodeMeaning
200Success
201Created (resource successfully created)
202Accepted (async operations)
204No Content (successful operation with no response body)
400Bad Request (validation errors)
401Unauthorized (missing or invalid authentication)
404Not Found (resource not found)
500Internal Server Error
503Service Unavailable (range system temporarily unreachable)

Note: For 5xx errors, please use a reasonable exponential backoff retry strategy. A 503 indicates the range system is temporarily unavailable and should recover shortly.