Overview
All API responses follow the JSON:API specification.
Each resource is returned with an id, type, and attributes object.
Attribute names use camelCase formatting (e.g. createdAt, fileType).
Relationships are included conditionally on detail (show) endpoints.
User
Represents an authenticated API user.
| Attribute | Type | Description |
|---|---|---|
id | uuid | Unique identifier |
email | string | Email address |
role | string | client, pilot, or admin |
accountRole | string | Role within the account |
shortName | string | Initials / short display name |
firstName | string | First name |
lastName | string | Last name |
fullName | string | Full display name |
niceName | string | Friendly display name |
primaryColor | string | Hex color for UI theming |
secondaryColor | string | Secondary hex color |
totalPoints | integer | Gamification points |
pilotProfileCompleted | boolean | Pilot profile complete? |
clientProfileCompleted | boolean | Client profile complete? |
createdAt | datetime | ISO 8601 creation timestamp |
updatedAt | datetime | ISO 8601 last updated |
Relationships: account
Campaign
Represents an aerial data collection request.
| Attribute | Type | Description |
|---|---|---|
id | uuid | Unique identifier |
name | string | Campaign name |
description | string | Campaign description |
dueAt | date | Due date |
earliestFlightAt | date | Earliest acceptable flight date |
state | string | Workflow state |
clientRequestedPrice | integer | Requested price in cents |
clientName | string | Client name |
companyName | string | Company name |
nearestDueDate | date | Nearest due date across missions |
missionIndustryNames | array | Industry tags |
createdAt | datetime | ISO 8601 creation timestamp |
updatedAt | datetime | ISO 8601 last updated |
Relationships: account, site, missions
Site
Represents a physical location for data collection.
| Attribute | Type | Description |
|---|---|---|
id | uuid | Unique identifier |
name | string | Site name |
description | string | Site description |
address1 | string | Street address line 1 |
address2 | string | Street address line 2 |
city | string | City |
state | string | State / province |
zipCode | string | Postal code |
country | string | Country code |
siteType | string | Type (solar, construction, etc.) |
latitude | decimal | Center latitude |
longitude | decimal | Center longitude |
fullAddress | string | Formatted full address |
area | decimal | Boundary area in km² |
geometry | GeoJSON | Boundary polygon as GeoJSON (null if not set) |
status | string | Current status |
faaRestrictionsSummary | string | FAA airspace summary |
createdAt | datetime | ISO 8601 creation timestamp |
updatedAt | datetime | ISO 8601 last updated |
Relationships: account, user, metroArea, campaigns
Artifact
Represents a piece of collected aerial data (photo, video, point cloud).
| Attribute | Type | Description |
|---|---|---|
id | uuid | Unique identifier |
title | string | File name or title |
fileType | string | JPEG, RAW, MP4, GeoTIFF, etc. |
latitude | decimal | Capture latitude |
longitude | decimal | Capture longitude |
altitude | decimal | Absolute altitude (m) |
relativeAltitude | decimal | AGL altitude (m) |
cameraMake | string | Camera manufacturer |
cameraModel | string | Camera model |
droneModel | string | Drone model name |
imageWidth | integer | Width in pixels |
imageHeight | integer | Height in pixels |
photoTakenAt | datetime | Capture time (from EXIF) |
isProcessed | boolean | Processing complete? |
imageUrl | string | Full-resolution URL |
thumbnailUrl | string | 400×400 thumbnail URL |
createdAt | datetime | ISO 8601 creation timestamp |
updatedAt | datetime | ISO 8601 last updated |
Relationships: coverageGroup