Initial commit
This commit is contained in:
725
skills/sleeptrack-be/references/rest_api_reference.md
Normal file
725
skills/sleeptrack-be/references/rest_api_reference.md
Normal file
@@ -0,0 +1,725 @@
|
||||
# Asleep REST API Reference
|
||||
|
||||
This reference provides comprehensive documentation for the Asleep REST API endpoints.
|
||||
|
||||
## Base URL
|
||||
|
||||
```
|
||||
https://api.asleep.ai
|
||||
```
|
||||
|
||||
## Authentication
|
||||
|
||||
All API requests require authentication via the `x-api-key` header:
|
||||
|
||||
```http
|
||||
x-api-key: YOUR_API_KEY
|
||||
```
|
||||
|
||||
Obtain your API key from the [Asleep Dashboard](https://dashboard.asleep.ai).
|
||||
|
||||
## Common Headers
|
||||
|
||||
| Header | Type | Required | Description |
|
||||
|--------|------|----------|-------------|
|
||||
| x-api-key | String | Yes | API authentication key |
|
||||
| x-user-id | String | Conditional | Required for session operations |
|
||||
| timezone | String | No | Response timezone (default: UTC) |
|
||||
|
||||
## Response Format
|
||||
|
||||
All responses follow this structure:
|
||||
|
||||
```json
|
||||
{
|
||||
"detail": "message about the result",
|
||||
"result": { /* response data */ }
|
||||
}
|
||||
```
|
||||
|
||||
## Common Error Codes
|
||||
|
||||
| Status | Error | Description |
|
||||
|--------|-------|-------------|
|
||||
| 401 | Unauthorized | API Key missing or invalid |
|
||||
| 403 | Plan expired | Subscription period ended |
|
||||
| 403 | Rate limit exceeded | Request quota temporarily exceeded |
|
||||
| 403 | Quota exceeded | Total usage limit surpassed |
|
||||
| 404 | Not Found | Resource doesn't exist |
|
||||
|
||||
---
|
||||
|
||||
## User Management APIs
|
||||
|
||||
### [POST] Create User
|
||||
|
||||
Creates a new user for sleep tracking.
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
POST https://api.asleep.ai/ai/v1/users
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
```
|
||||
|
||||
**Request Body (Optional):**
|
||||
```json
|
||||
{
|
||||
"metadata": {
|
||||
"birth_year": 1990,
|
||||
"birth_month": 5,
|
||||
"birth_day": 15,
|
||||
"gender": "male",
|
||||
"height": 175.5,
|
||||
"weight": 70.0
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Metadata Fields:**
|
||||
- `birth_year` (Integer): User's birth year
|
||||
- `birth_month` (Integer): User's birth month (1-12)
|
||||
- `birth_day` (Integer): User's birth day (1-31)
|
||||
- `gender` (String): One of: `male`, `female`, `non_binary`, `other`, `prefer_not_to_say`
|
||||
- `height` (Float): Height in cm (0-300)
|
||||
- `weight` (Float): Weight in kg (0-1000)
|
||||
|
||||
**Response (201 Created):**
|
||||
```json
|
||||
{
|
||||
"detail": "success",
|
||||
"result": {
|
||||
"user_id": "550e8400-e29b-41d4-a716-446655440000"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X POST "https://api.asleep.ai/ai/v1/users" \
|
||||
-H "x-api-key: YOUR_API_KEY" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d '{
|
||||
"metadata": {
|
||||
"birth_year": 1990,
|
||||
"gender": "male",
|
||||
"height": 175.5,
|
||||
"weight": 70.0
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.post(
|
||||
"https://api.asleep.ai/ai/v1/users",
|
||||
headers={"x-api-key": "YOUR_API_KEY"},
|
||||
json={
|
||||
"metadata": {
|
||||
"birth_year": 1990,
|
||||
"gender": "male",
|
||||
"height": 175.5,
|
||||
"weight": 70.0
|
||||
}
|
||||
}
|
||||
)
|
||||
user_id = response.json()["result"]["user_id"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### [GET] Get User
|
||||
|
||||
Retrieves user information and last session data.
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
GET https://api.asleep.ai/ai/v1/users/{user_id}
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
- `user_id` (String): User identifier
|
||||
|
||||
**Response (200 OK):**
|
||||
```json
|
||||
{
|
||||
"detail": "success",
|
||||
"result": {
|
||||
"user_id": "550e8400-e29b-41d4-a716-446655440000",
|
||||
"to_be_deleted": false,
|
||||
"last_session_info": {
|
||||
"session_id": "abc123",
|
||||
"state": "COMPLETE",
|
||||
"session_start_time": "2024-01-20T22:00:00+00:00",
|
||||
"session_end_time": "2024-01-21T06:30:00+00:00"
|
||||
},
|
||||
"metadata": {
|
||||
"birth_year": 1990,
|
||||
"birth_month": 5,
|
||||
"birth_day": 15,
|
||||
"gender": "male",
|
||||
"height": 175.5,
|
||||
"weight": 70.0
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Session States:**
|
||||
- `OPEN`: Session in progress, audio uploads available
|
||||
- `CLOSED`: Session terminated, analysis in progress
|
||||
- `COMPLETE`: All analysis completed
|
||||
|
||||
**Error Response (404):**
|
||||
```json
|
||||
{
|
||||
"detail": "user does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X GET "https://api.asleep.ai/ai/v1/users/USER_ID" \
|
||||
-H "x-api-key: YOUR_API_KEY"
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.get(
|
||||
f"https://api.asleep.ai/ai/v1/users/{user_id}",
|
||||
headers={"x-api-key": "YOUR_API_KEY"}
|
||||
)
|
||||
user_data = response.json()["result"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### [DELETE] Delete User
|
||||
|
||||
Permanently removes a user and all associated data.
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
DELETE https://api.asleep.ai/ai/v1/users/{user_id}
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
- `user_id` (String): User identifier
|
||||
|
||||
**Response (204 No Content):**
|
||||
User information successfully deleted.
|
||||
|
||||
**Error Responses:**
|
||||
|
||||
401 Unauthorized:
|
||||
```json
|
||||
{
|
||||
"detail": "user_id is invalid"
|
||||
}
|
||||
```
|
||||
|
||||
404 Not Found:
|
||||
```json
|
||||
{
|
||||
"detail": "user does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X DELETE "https://api.asleep.ai/ai/v1/users/USER_ID" \
|
||||
-H "x-api-key: YOUR_API_KEY"
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.delete(
|
||||
f"https://api.asleep.ai/ai/v1/users/{user_id}",
|
||||
headers={"x-api-key": "YOUR_API_KEY"}
|
||||
)
|
||||
# 204 No Content on success
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Session Management APIs
|
||||
|
||||
### [GET] Get Session
|
||||
|
||||
Retrieves comprehensive sleep analysis data for a specific session.
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
GET https://api.asleep.ai/data/v3/sessions/{session_id}
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
x-user-id: USER_ID
|
||||
timezone: Asia/Seoul # Optional, defaults to UTC
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
- `session_id` (String): Session identifier
|
||||
|
||||
**Query Parameters:**
|
||||
None
|
||||
|
||||
**Response (200 OK):**
|
||||
```json
|
||||
{
|
||||
"detail": "success",
|
||||
"result": {
|
||||
"timezone": "UTC",
|
||||
"peculiarities": [],
|
||||
"missing_data_ratio": 0.0,
|
||||
"session": {
|
||||
"id": "session123",
|
||||
"state": "COMPLETE",
|
||||
"start_time": "2024-01-20T22:00:00+00:00",
|
||||
"end_time": "2024-01-21T06:30:00+00:00",
|
||||
"sleep_stages": [0, 0, 1, 1, 2, 3, 2, 1, 0],
|
||||
"snoring_stages": [0, 0, 0, 1, 1, 0, 0, 0, 0]
|
||||
},
|
||||
"stat": {
|
||||
"sleep_time": "06:30:00",
|
||||
"sleep_index": 85.5,
|
||||
"sleep_latency": 900,
|
||||
"time_in_bed": 30600,
|
||||
"time_in_sleep": 27000,
|
||||
"time_in_light": 13500,
|
||||
"time_in_deep": 6750,
|
||||
"time_in_rem": 6750,
|
||||
"sleep_efficiency": 88.24,
|
||||
"waso_count": 2,
|
||||
"longest_waso": 300,
|
||||
"sleep_cycle": [
|
||||
{
|
||||
"order": 1,
|
||||
"start_time": "2024-01-20T22:15:00+00:00",
|
||||
"end_time": "2024-01-21T01:30:00+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Sleep Stages Values:**
|
||||
- `-1`: Unknown/No data
|
||||
- `0`: Wake
|
||||
- `1`: Light sleep
|
||||
- `2`: Deep sleep
|
||||
- `3`: REM sleep
|
||||
|
||||
**Snoring Stages Values:**
|
||||
- `0`: No snoring
|
||||
- `1`: Snoring detected
|
||||
|
||||
**Peculiarities:**
|
||||
- `IN_PROGRESS`: Session still being analyzed
|
||||
- `NEVER_SLEPT`: No sleep detected in session
|
||||
- `TOO_SHORT_FOR_ANALYSIS`: Session duration < 5 minutes
|
||||
|
||||
**Error Responses:**
|
||||
|
||||
400 Bad Request:
|
||||
```json
|
||||
{
|
||||
"detail": "Invalid timezone format"
|
||||
}
|
||||
```
|
||||
|
||||
404 Not Found:
|
||||
```json
|
||||
{
|
||||
"detail": "Session not found"
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X GET "https://api.asleep.ai/data/v3/sessions/SESSION_ID" \
|
||||
-H "x-api-key: YOUR_API_KEY" \
|
||||
-H "x-user-id: USER_ID" \
|
||||
-H "timezone: UTC"
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.get(
|
||||
f"https://api.asleep.ai/data/v3/sessions/{session_id}",
|
||||
headers={
|
||||
"x-api-key": "YOUR_API_KEY",
|
||||
"x-user-id": user_id,
|
||||
"timezone": "UTC"
|
||||
}
|
||||
)
|
||||
session_data = response.json()["result"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### [GET] List Sessions
|
||||
|
||||
Retrieves multiple sessions with filtering and pagination.
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
GET https://api.asleep.ai/data/v1/sessions
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
x-user-id: USER_ID
|
||||
timezone: UTC # Optional
|
||||
```
|
||||
|
||||
**Query Parameters:**
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| date_gte | String (YYYY-MM-DD) | No | - | Sessions on or after this date |
|
||||
| date_lte | String (YYYY-MM-DD) | No | - | Sessions on or before this date |
|
||||
| order_by | String (ASC/DESC) | No | DESC | Sort direction by start time |
|
||||
| offset | Integer | No | 0 | Number of records to skip |
|
||||
| limit | Integer (0-100) | No | 20 | Maximum records per request |
|
||||
|
||||
**Response (200 OK):**
|
||||
```json
|
||||
{
|
||||
"detail": "success",
|
||||
"result": {
|
||||
"timezone": "UTC",
|
||||
"sleep_session_list": [
|
||||
{
|
||||
"session_id": "session123",
|
||||
"state": "COMPLETE",
|
||||
"session_start_time": "2024-01-20T22:00:00+00:00",
|
||||
"session_end_time": "2024-01-21T06:30:00+00:00",
|
||||
"created_timezone": "UTC",
|
||||
"unexpected_end_time": null,
|
||||
"last_received_seq_num": 156,
|
||||
"time_in_bed": 30600
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Error Response (400):**
|
||||
```json
|
||||
{
|
||||
"detail": "Invalid timezone"
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X GET "https://api.asleep.ai/data/v1/sessions?date_gte=2024-01-01&limit=10" \
|
||||
-H "x-api-key: YOUR_API_KEY" \
|
||||
-H "x-user-id: USER_ID"
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.get(
|
||||
"https://api.asleep.ai/data/v1/sessions",
|
||||
headers={
|
||||
"x-api-key": "YOUR_API_KEY",
|
||||
"x-user-id": user_id
|
||||
},
|
||||
params={
|
||||
"date_gte": "2024-01-01",
|
||||
"date_lte": "2024-01-31",
|
||||
"limit": 50,
|
||||
"order_by": "DESC"
|
||||
}
|
||||
)
|
||||
sessions = response.json()["result"]["sleep_session_list"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### [DELETE] Delete Session
|
||||
|
||||
Permanently removes a session and all associated data.
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
DELETE https://api.asleep.ai/ai/v1/sessions/{session_id}
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
x-user-id: USER_ID
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
- `session_id` (String): Session identifier
|
||||
|
||||
**Response (204 No Content):**
|
||||
Session, uploaded audio, and analysis data successfully deleted.
|
||||
|
||||
**Error Responses:**
|
||||
|
||||
401 Unauthorized:
|
||||
```json
|
||||
{
|
||||
"detail": "x-user-id is invalid"
|
||||
}
|
||||
```
|
||||
|
||||
404 Not Found (User):
|
||||
```json
|
||||
{
|
||||
"detail": "user does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
404 Not Found (Session):
|
||||
```json
|
||||
{
|
||||
"detail": "session does not exist"
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X DELETE "https://api.asleep.ai/ai/v1/sessions/SESSION_ID" \
|
||||
-H "x-api-key: YOUR_API_KEY" \
|
||||
-H "x-user-id: USER_ID"
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.delete(
|
||||
f"https://api.asleep.ai/ai/v1/sessions/{session_id}",
|
||||
headers={
|
||||
"x-api-key": "YOUR_API_KEY",
|
||||
"x-user-id": user_id
|
||||
}
|
||||
)
|
||||
# 204 No Content on success
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Statistics APIs
|
||||
|
||||
### [GET] Get Average Stats
|
||||
|
||||
Retrieves average sleep metrics over a specified time period (up to 100 days).
|
||||
|
||||
**Endpoint:**
|
||||
```
|
||||
GET https://api.asleep.ai/data/v1/users/{user_id}/average-stats
|
||||
```
|
||||
|
||||
**Headers:**
|
||||
```
|
||||
x-api-key: YOUR_API_KEY
|
||||
timezone: UTC # Optional
|
||||
```
|
||||
|
||||
**Path Parameters:**
|
||||
- `user_id` (String): User identifier
|
||||
|
||||
**Query Parameters:**
|
||||
| Parameter | Type | Required | Description |
|
||||
|-----------|------|----------|-------------|
|
||||
| start_date | String (YYYY-MM-DD) | Yes | Period start date |
|
||||
| end_date | String (YYYY-MM-DD) | Yes | Period end date (max 100 days from start) |
|
||||
|
||||
**Response (200 OK):**
|
||||
```json
|
||||
{
|
||||
"detail": "success",
|
||||
"result": {
|
||||
"period": {
|
||||
"start_date": "2024-01-01",
|
||||
"end_date": "2024-01-31",
|
||||
"days": 31
|
||||
},
|
||||
"peculiarities": [],
|
||||
"average_stats": {
|
||||
"start_time": "22:30:00",
|
||||
"end_time": "06:45:00",
|
||||
"sleep_time": "07:15:00",
|
||||
"wake_time": "06:45:00",
|
||||
"sleep_latency": 900,
|
||||
"wakeup_latency": 300,
|
||||
"time_in_bed": 30600,
|
||||
"time_in_sleep_period": 29700,
|
||||
"time_in_sleep": 26100,
|
||||
"time_in_wake": 3600,
|
||||
"time_in_light": 13050,
|
||||
"time_in_deep": 6525,
|
||||
"time_in_rem": 6525,
|
||||
"time_in_snoring": 1800,
|
||||
"time_in_no_snoring": 24300,
|
||||
"sleep_efficiency": 85.29,
|
||||
"wake_ratio": 0.12,
|
||||
"sleep_ratio": 0.88,
|
||||
"light_ratio": 0.50,
|
||||
"deep_ratio": 0.25,
|
||||
"rem_ratio": 0.25,
|
||||
"snoring_ratio": 0.07,
|
||||
"no_snoring_ratio": 0.93,
|
||||
"waso_count": 2.5,
|
||||
"longest_waso": 420,
|
||||
"sleep_cycle_count": 4.2,
|
||||
"snoring_count": 15.3
|
||||
},
|
||||
"never_slept_sessions": [],
|
||||
"slept_sessions": [
|
||||
{
|
||||
"session_id": "session123",
|
||||
"session_start_time": "2024-01-20T22:00:00+00:00"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Metrics Explanation:**
|
||||
|
||||
**Time Metrics** (HH:MM:SS format or seconds):
|
||||
- `start_time`: Average bedtime
|
||||
- `end_time`: Average wake time
|
||||
- `sleep_time`: Average time of falling asleep
|
||||
- `wake_time`: Average time of waking up
|
||||
- `sleep_latency`: Average time to fall asleep (seconds)
|
||||
- `wakeup_latency`: Average time from wake to getting up (seconds)
|
||||
- `time_in_bed`: Average total time in bed (seconds)
|
||||
- `time_in_sleep_period`: Average time from sleep onset to wake (seconds)
|
||||
- `time_in_sleep`: Average actual sleep time (seconds)
|
||||
- `time_in_wake`: Average wake time during sleep period (seconds)
|
||||
|
||||
**Sleep Stage Durations** (seconds):
|
||||
- `time_in_light`: Average light sleep duration
|
||||
- `time_in_deep`: Average deep sleep duration
|
||||
- `time_in_rem`: Average REM sleep duration
|
||||
|
||||
**Snoring Metrics** (seconds):
|
||||
- `time_in_snoring`: Average snoring duration
|
||||
- `time_in_no_snoring`: Average non-snoring duration
|
||||
|
||||
**Ratio Metrics** (0-1 decimal):
|
||||
- `sleep_efficiency`: Sleep time / Time in bed
|
||||
- `wake_ratio`, `sleep_ratio`: Wake/sleep proportions
|
||||
- `light_ratio`, `deep_ratio`, `rem_ratio`: Sleep stage proportions
|
||||
- `snoring_ratio`, `no_snoring_ratio`: Snoring proportions
|
||||
|
||||
**Event Counts**:
|
||||
- `waso_count`: Average wake after sleep onset episodes
|
||||
- `longest_waso`: Average longest wake episode (seconds)
|
||||
- `sleep_cycle_count`: Average number of sleep cycles
|
||||
- `snoring_count`: Average snoring episodes
|
||||
|
||||
**Peculiarities:**
|
||||
- `NO_BREATHING_STABILITY`: Inconsistent breathing data
|
||||
|
||||
**Error Responses:**
|
||||
|
||||
400 Bad Request:
|
||||
```json
|
||||
{
|
||||
"detail": "The period should be less than or equal to 100 days"
|
||||
}
|
||||
```
|
||||
|
||||
404 Not Found:
|
||||
```json
|
||||
{
|
||||
"detail": "Unable to find the user of id {user_id}"
|
||||
}
|
||||
```
|
||||
|
||||
**Example (curl):**
|
||||
```bash
|
||||
curl -X GET "https://api.asleep.ai/data/v1/users/USER_ID/average-stats?start_date=2024-01-01&end_date=2024-01-31" \
|
||||
-H "x-api-key: YOUR_API_KEY" \
|
||||
-H "timezone: UTC"
|
||||
```
|
||||
|
||||
**Example (Python):**
|
||||
```python
|
||||
import requests
|
||||
|
||||
response = requests.get(
|
||||
f"https://api.asleep.ai/data/v1/users/{user_id}/average-stats",
|
||||
headers={
|
||||
"x-api-key": "YOUR_API_KEY",
|
||||
"timezone": "UTC"
|
||||
},
|
||||
params={
|
||||
"start_date": "2024-01-01",
|
||||
"end_date": "2024-01-31"
|
||||
}
|
||||
)
|
||||
stats = response.json()["result"]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Rate Limiting
|
||||
|
||||
The Asleep API implements rate limiting to ensure fair usage:
|
||||
|
||||
- **Rate Limit Exceeded (403)**: Temporary quota exceeded
|
||||
- **Quota Exceeded (403)**: Total usage limit reached
|
||||
- **Plan Expired (403)**: Subscription period ended
|
||||
|
||||
Monitor your usage in the [Asleep Dashboard](https://dashboard.asleep.ai).
|
||||
|
||||
**Best Practices:**
|
||||
- Implement exponential backoff for retries
|
||||
- Cache responses when appropriate
|
||||
- Batch requests when possible
|
||||
- Monitor usage proactively
|
||||
|
||||
---
|
||||
|
||||
## API Versioning
|
||||
|
||||
The Asleep API uses versioned endpoints (e.g., `/v1/`, `/v3/`). Version upgrades occur when:
|
||||
|
||||
- Renaming response object fields
|
||||
- Modifying data types or enum values
|
||||
- Restructuring response objects
|
||||
- Introducing breaking changes
|
||||
|
||||
Non-breaking changes (like adding new fields) don't trigger version upgrades.
|
||||
|
||||
**Current Versions:**
|
||||
- User Management: `/ai/v1/`
|
||||
- Session Data: `/data/v3/` (Get Session), `/data/v1/` (List Sessions)
|
||||
- Statistics: `/data/v1/`
|
||||
Reference in New Issue
Block a user