Welcome to the RAS Integration Help Center. This guide covers everything you need to know about using the Integration Dashboard and REST API.
The Integration Dashboard is a web-based tool for third-party integrators to monitor and manage bay commands sent to Range Automation Systems venues. It provides real-time command logs, KPI summaries, and anomaly detection across all your connected venues.
A walkthrough of the dashboard interface and its components.
The header bar displays the RAS logo, your integrator name (shown as a badge), and links to API Docs, Help, theme toggle (light/dark mode), and Sign Out.
The controls bar sits below the header and provides the following filters:
| Control | Description |
|---|---|
| Venue | Select which venue to view command logs for. Only venues assigned to your integrator account are shown. |
| Period | Time window for data: 1 hour, 6 hours, 12 hours, 24 hours (default), 48 hours, or 7 days. |
| Bay | Filter commands to a specific bay number. Leave empty to show all bays. |
| Sender | Filter by the system or user that sent the command. Leave empty to show all senders. |
| Refresh | Reload data from the API with current filter settings. |
Six cards display aggregate counts for the selected period:
Understanding the command log table and its columns.
| Column | Description |
|---|---|
| Timestamp | Date and time the command was received, displayed in your local timezone. Click the header to toggle sort order. |
| Bay | The bay number the command targets. |
| Action | The type of command sent. See action types below. |
| Balls | Number of balls dispensed (for START/EDIT commands). |
| Time (min) | Duration in minutes allocated to the session (for START/EDIT commands). |
| Endpoint | The API endpoint that processed the command (e.g., /api/write, /api/read). |
| Sender | The integrator or system that sent the command. |
| Comments | Optional text included with the command for tracking purposes. |
| Command ID | Unique identifier (GUID) for the command, useful for support and debugging. |
| Action | Description | API Endpoint |
|---|---|---|
| START | Activates a bay with specified balls and time allocation. | POST /api/write with Active: true |
| STOP | Deactivates a bay, ending the current session. | POST /api/write with Active: false |
| EDIT | Modifies balls or time on an active bay without restarting. | POST /api/edit |
| READ | Reads the current state of all bays at the venue. | GET /api/read |
How to narrow down command log results.
The venue dropdown shows all venues assigned to your integrator account. Select a venue to load its command data. The dashboard remembers your last selected venue between sessions.
Choose a time window to control how far back to retrieve commands. Longer periods may take slightly longer to load. The default is 24 hours.
Type a bay number to filter the command log to commands targeting that specific bay. Leave empty to see all bays. The filter applies as you type.
Type a sender name to filter commands to those sent by a specific integrator or system. This is useful when multiple systems are sending commands to the same venue.
Click any of the six summary cards at the top of the dashboard to filter the table to only that command type. For example, clicking the "Starts" card will show only START commands. Click the same card again to clear the filter and show all commands.
Understanding and responding to detected anomalies in command patterns.
The dashboard automatically analyzes command patterns and flags unusual activity. Anomalies may indicate integration bugs, unexpected behavior, or configuration issues that need attention.
When anomalies are detected, a red panel appears above the command log table showing a summary count and list of detected issues. Click any anomaly row to view full details in a modal dialog.
| Severity | Description | Action Required |
|---|---|---|
| High | Critical issues such as rapid duplicate commands, start without stop, or commands to non-existent bays. | Investigate immediately. These may indicate a bug in your integration. |
| Medium | Unusual patterns such as high command frequency, unusual time/ball values, or repeated edits. | Review at your convenience. May indicate suboptimal integration logic. |
| Low | Minor observations such as commands at unusual hours or minor timing variations. | Informational only. No immediate action needed. |
Click an anomaly row to open a detail modal showing:
Overview of the RAS REST API for programmatic bay control.
The RAS API allows integrators to programmatically read bay states and send commands (start, stop, edit) to bays at connected venues. All communication uses HTTPS with API key authentication.
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/read |
Retrieve current state of all bays at a venue |
| POST | /api/write |
Start or stop a bay session |
| POST | /api/edit |
Modify balls or time on an active bay |
| POST | /api/batch |
Send multiple start or stop commands in a single request |
How authentication works for the dashboard and API.
Sign in using your integrator name and API key. These credentials are provided by Range Automation Systems when your integrator account is provisioned.
All API requests must include your API key in the x-api-key header. Requests without a valid key will receive a 401 Unauthorized or 403 Forbidden response.
x-api-key: YOUR_API_KEY
curl -X GET "https://YOUR_BASE_URL/api/read" \
-H "x-api-key: YOUR_API_KEY"
Managing your API keys and security best practices.
API keys are provisioned by Range Automation Systems during integrator onboarding. Each integrator receives a unique key tied to their account and venue assignments.
If you need to rotate your API key (e.g., suspected compromise), contact Range Automation Systems support. A new key will be issued and the old key will be revoked.
Common API patterns with request and response examples.
Use GET /api/read to retrieve the current state of all bays at a venue.
GET /api/read
x-api-key: YOUR_API_KEY
Use POST /api/write with Active: true to start a bay session. Include a unique GUID as a query parameter for idempotency.
POST /api/write?guid=UNIQUE_GUID
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"BayId": 1,
"Active": true,
"TotalBalls": 100,
"TotalTime": 60,
"Sender": "YourIntegrator",
"Comments": "Session started via API"
}
Use POST /api/write with Active: false to stop an active bay.
POST /api/write?guid=UNIQUE_GUID
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"BayId": 1,
"Active": false,
"TotalBalls": 0,
"TotalTime": 0,
"Sender": "YourIntegrator",
"Comments": "Session ended"
}
Use POST /api/edit to modify the balls or time on an active bay without restarting the session.
POST /api/edit
Content-Type: application/json
x-api-key: YOUR_API_KEY
{
"BayId": 1,
"TotalBalls": 999,
"TotalTime": 90
}
Use POST /api/batch to start or stop multiple bays in a single request. This is more efficient than sending individual commands.
guid query parameter on write requests. This ensures idempotency — if a request is retried due to a network error, the command won't be executed twice.
A live, push-based feed of bay status from RAS to your system.
The API endpoints above are pull — your system calls RAS. The heartbeat is the reverse: when enabled for a venue, the on-site RAS controller pushes a snapshot of every bay's state to a URL you host, about once per minute. It's the recommended way to keep a live view without polling, and it doubles as an offline detector — if heartbeats stop arriving, that venue's controller is down.
/api/read is rate-limited to 1 request per 10 seconds per API key — requests beyond that return 429 Too Many Requests. If you need bay state more often than that, the heartbeat is the answer: it's pushed to you every minute with no request overhead, and it's fresher on average than polling. Keep /api/read for spot-checks and reconciliation.
| Item | Description |
|---|---|
Heartbeat URL |
An endpoint that accepts a POST. RAS appends your venue identifier to the path so each beat is attributable to a site — e.g. https://api.youapp.com/v1/ras/heartbeat/{your-venue-id} |
x-api-key |
A key RAS sends on every heartbeat request so you can authenticate it (recommended). |
Each POST body is a JSON array of bay objects: BayNumber, ModeType, OperationMode, ErrorId, and EquipmentType. The same ModeType and ErrorID enums from the API apply.
Common issues and how to resolve them.
| Problem | Solution |
|---|---|
| "Invalid credentials" error | Verify your integrator name and API key are correct. Names are case-sensitive. Check for leading or trailing spaces. |
| Login page won't load | Check your internet connection and try clearing your browser cache. Ensure you're using a modern browser (Chrome, Firefox, Edge, Safari). |
| Session expired | For security, sessions expire after a period of inactivity. Simply sign in again with your credentials. |
| Problem | Solution |
|---|---|
| No venues in dropdown | Your integrator account may not have any venues assigned. Contact Range Automation Systems to verify your venue assignments. |
| No data showing for venue | Ensure the selected time period covers when commands were sent. Try expanding to "Last 7 days". If still empty, no commands have been sent in that period. |
| Data not refreshing | Click the Refresh button in the controls bar. If data is still stale, try signing out and signing back in. |
| Status Code | Meaning | Resolution |
|---|---|---|
401 |
Unauthorized — Missing or invalid API key | Verify the x-api-key header is present and contains a valid key. |
403 |
Forbidden — Key is valid but not authorized for this venue or action | Check that your API key has permission for the target venue. Contact support if needed. |
400 |
Bad Request — Invalid request body or parameters | Check the request body matches the expected schema. Refer to the API Docs. |
429 |
Too Many Requests — Rate limit exceeded | Reduce your request frequency. Implement exponential backoff in your integration. |
500 |
Internal Server Error | Retry after a few seconds. If persistent, contact Range Automation Systems support. |
Answers to common questions about the Integration Dashboard and API.
Data is fetched from the API each time you select a venue, change a filter, or click Refresh. There is no automatic polling — you control when data is loaded.
Timestamps in the command log are converted to your browser's local timezone. The API stores all timestamps in UTC internally.
Yes. API Gateway enforces rate limits per API key. If you exceed the limit, you'll receive a 429 Too Many Requests response. Implement retry logic with exponential backoff in your integration.
Each integrator account is issued one API key. If you need separate keys for development and production, contact Range Automation Systems to discuss options.
Use the guid query parameter on write requests to ensure idempotency. If the same GUID is sent twice, the second request will be treated as a duplicate and won't execute again.
Contact Range Automation Systems support with the venue names you need access to. Venue assignments are managed at the account level.
Contact Range Automation Systems to request access to a sandbox environment for development and testing. This lets you test your integration without affecting production venues.
For technical issues, integration questions, or account management, contact Range Automation Systems at support@rangesystems.com.