πData Models
This document provides a consolidated view of all unique data models.
Master Database Schema
Deletion Policy: All "Delete" operations in the UDAI API perform a soft delete. We do not hard-delete records. Instead, the
statusblock on the resource is updated to-1(Inactive).
1. Users
user_id
int, unique
1042
Auto-incrementing, must be unique
user_uuid
UUID, unique, primary key
550e8400-e29b-41d4-a716-446655440000
Must be a valid UUID v4, unique
user_udai_id
string, unique
UDAI-USR-001
Format: UDAI-USR-[0-9]+, unique
first_name
string
John
Max 100 characters, no special characters
last_name
string
Doe
Max 100 characters, no special characters
email_verified
boolean
true
Must be boolean
password
string, hashed
argon2id$v=19$m=16...
Must be a valid Argon2/Bcrypt hash
phone
string, unique
+919876543210
E.164 format, unique
phone_verified
boolean
true
Must be boolean
role
int/enum
3
Must be a valid role enum value
is_certified_pilot
boolean
true
Must be boolean
rpc_number
string, unique
RPC-DGCA-2023-456
Format required by DGCA, unique if present
status
int/enum
1
Must be valid status enum (1=Active, -1=Inactive, etc)
profile_picture
string
https://bucket/profile.jpg
Valid HTTP/S URL or storage path
last_login
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
system
References a valid user_uuid or system
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400-e29b-41d4-a716-446655440000
References a valid user_uuid
2. Pilot Credentials (Linked to Users)
cred_id
int, unique
502
Auto-incrementing, must be unique
cred_uuid
UUID, unique, primary key
f47ac10b-58cc-4372-a567-0e02b2c3d479
Must be a valid UUID v4, unique
user_uuid
UUID, foreign key
550e8400-e29b-41d4-a716-446655440000
Must exist in Users table
category
enum
1
Must be valid category enum
sub_category
enum
2
Must be valid sub_category enum
class
enum
3
Must be valid class enum
status
enum
1
Must be valid status enum
source
enum
1
Must be valid source enum (e.g., self-declared, verified)
registered_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp
registered_by
string
550e8400...
References a valid user_uuid
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
3. Organisations
org_id
int, unique
801
Auto-incrementing, must be unique
org_uuid
UUID, unique, primary key
9f3a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
Must be a valid UUID v4, unique
org_udai_id
string, unique
UDAI-ORG-102
Format: UDAI-ORG-[0-9]+, unique
org_name
string
AeroTech Solutions
Max 150 chars, must be unique
org_address
string
123 Drone Park, BLR
Max 500 characters
org_website
string
https://aerotech.com
Must be a valid HTTP/S URL
org_business_identifiers
json
{"gst": "29ABCDE1234F1Z5"}
Must be a valid JSON object string
org_type
enum
2
Must be valid org_type enum
status
enum
1
Must be valid status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
4. Organisation Memberships
membership_id
int, unique
320
Auto-incrementing, must be unique
membership_uuid
UUID, unique, primary key
c3e5d0f1-4b2a-6c8e-9d7f-1a3b5c7d9e0f
Must be a valid UUID v4, unique
membership_udai_id
string, unique
UDAI-MEM-005
Format: UDAI-MEM-[0-9]+, unique
org_uuid
UUID, foreign key
9f3a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
Must exist in Organisations table
user_uuid
UUID, foreign key
550e8400-e29b-41d4-a716-446655440000
Must exist in Users table
role
enum
3
Must be valid membership role enum
status
enum
1
Must be valid status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
9f3a1b2c...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
9f3a1b2c...
References a valid user_uuid
5. Org Invitations
Tracks a pending, accepted, declined, expired, or revoked invitation sent to a user (by email or phone) to join an organisation.
invitation_id
int, unique
450
Auto-incrementing, must be unique
invitation_uuid
UUID, unique, primary key
7b23c4d5-e6f7-8901-ab2c-3d4e5f6a7b8c
Must be a valid UUID v4, unique
invitation_udai_id
string, unique
UDAI-INV-009
Format: UDAI-INV-[0-9]+, unique
org_uuid
UUID, foreign key
9f3a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
Must exist in Organisations table
invited_by_user_uuid
UUID, foreign key
550e8400-e29b-41d4-a716-446655440000
Must exist in Users table (the sender)
invitee_user_uuid
UUID, foreign key, nullable
null or 123e4567...
If provided, must exist in Users table
identifier_type
enum
email
Must be either "email" or "phone"
role
int/enum
3
Must be a valid membership role enum
invitation_token
string, unique
aBcD123XyZ
Secure random string, auto-generated
expires_at
timestamp
2025-07-08T08:00:00Z
Must be future timestamp, typically +X days from creation
status
int/enum
0
Must be valid invitation status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
6. Drone Models
model_id
int, unique
605
Auto-incrementing, must be unique
model_uuid
UUID, unique, primary key
f0154cf0-fef0-4c3e-b816-43e34b9cfbc1
Must be a valid UUID v4, unique
model_udai_id
string, unique
UDAI-MOD-23
Format: UDAI-MOD-[0-9]+, unique
model_name
string
AeroSwift XT
Max 100 characters
model_variant
string
v2.Pro
Max 50 characters, nullable
model_version
string
1.0.4
Semantic versioning format preferred
type_certificate_number
string
TC-092-2023
Format matching DGCA specifications
manufacturer_uuid
string, UUID
9f3a1b2c...
Must exist in Organisations table (type=Manufacturer)
category
enum
1
Must be valid drone category enum
sub_category
enum
2
Must be valid sub_category enum
class
enum
3
Must be valid class enum
max_takeoff_weight
double
2.5
Greater than 0
max_dimensions
string
400x400x200
Format: LengthxWidthxHeight (mm)
max_endurance
double
45.0
In minutes, greater than 0
max_range
double
5.0
In kilometers, greater than 0
max_speed
double
15.0
In m/s, greater than 0
max_height
double
120.0
In meters, greater than 0
min_temp
double
-10.0
In Celsius
max_temp
double
50.0
In Celsius, must be > min_temp
operation_envelope
enum
VLOS
VLOS or BVLOS
frequency
string
2.4GHz
Max 50 characters
gcs_model
string
Smart Controller V2
Max 100 characters
gcs_version
string
1.2.0
Semantic versioning format preferred
application
string
Surveillance
Max 255 characters
status
enum
1
Must be valid status enum
source
enum
1
Must be valid source enum
allowed_payload_uuids
array of UUIDs
["f8e9d0c1..."]
All UUIDs must exist in Payloads table
registered_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp
registered_by
string
550e8400...
References a valid user_uuid
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
7. Payloads
Represents a physical sensor or attachment that can be equipped on a drone. Drone Models define which payloads they support, and Drones define which payloads they are currently equipped with.
payload_id
int, unique
102
Auto-incrementing, must be unique
payload_uuid
UUID, unique, primary key
f8e9d0c1-b2a3-4455-6677-889900aabbcc
Must be a valid UUID v4, unique
payload_udai_id
string, unique
UDAI-PAY-045
Format: UDAI-PAY-[0-9]+, unique
payload_name
string
Zenmuse H20T
Max 100 characters
payload_type
int/enum
2
Must be a valid payload_type enum (e.g., 2 = Thermal Camera)
manufacturer
string
DJI
Max 100 characters
weight_kg
double
0.85
Weight of the payload in kilograms, >= 0
power_draw_watts
double
12.5
Optional, expected power draw
status
int/enum
1
Must be valid status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
8. Drones
drone_id
int, unique
2054
Auto-incrementing, must be unique
drone_uuid
UUID, unique, primary key
9f5b610c-98cc-4372-a167-1e02b2c31479
Must be a valid UUID v4, unique
drone_udai_id
string, unique
UDAI-DRN-092
Format: UDAI-DRN-[0-9]+, unique
drone_uin
string, unique
UIN-IND-01239X
DGCA UIN format, nullable/optional if Pending
uin_status
int/enum
1
Must be valid drone_uin_status enum (0=Pending, 1=Generated)
drone_org_internal_uuid
string, unique
ORG-ASSET-09
Optional, unique within organisation
drone_model_uuid
string (UUID), foreign key
f0154cf0...
Must exist in Drone Models table
org_owner_uuid
string (UUID), foreign key
9f3a1b2c...
Must exist in Organisations table
status
enum
1
Must be valid status enum
source
enum
1
Must be valid source enum (e.g., imported, DGCA API)
active_payload_uuids
array of UUIDs
["f8e9d0c1..."]
Must exist in Payloads table & allowed by model
registered_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp
registered_by
string
550e8400...
References a valid user_uuid
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
9. Drone Transfers
Represents a request to transfer drone ownership from one organisation to another. Once approved, a Drone Ownership record is created.
transfer_id
int, unique
432
Auto-incrementing, must be unique
transfer_uuid
UUID, unique, primary key
d2c3b4a5-6789-01ef-abcd-ef1234567890
Must be a valid UUID v4, unique
transfer_udai_id
string, unique
UDAI-TXR-041
Format: UDAI-TXR-[0-9]+, unique
drone_uuid
string (UUID), foreign key
9f5b610c...
Must exist in Drones table
from_org_uuid
string (UUID), foreign key
9f3a1b2c...
org_uuid of sender, must own drone
to_org_uuid
string (UUID), foreign key
c3e5d0f1...
org_uuid of receiver, must not be sender
initiated_by_user_uuid
string (UUID), foreign key
550e8400...
Must exist in Users table
transfer_type
int/enum
1
1=Permanent, 2=Temporary
transfer_description
string
Lease for 3 months
Max 500 characters, nullable
transfer_date
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp
expires_at
timestamp, nullable
2025-10-04T10:30:00Z
Required if transfer_type=2, else null
status
int/enum
1
Must be valid transfer_status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
10. Drone Ownerships
Represents an active or historical drone ownership record for an organisation. Created when a Drone Transfer is accepted.
ownership_id
int, unique
1210
Auto-incrementing, must be unique
ownership_uuid
UUID, unique, primary key
ab12cd34-ef56-7890-abcd-ef1234567890
Must be a valid UUID v4, unique
ownership_udai_id
string, unique
UDAI-OWN-40
Format: UDAI-OWN-[0-9]+, unique
drone_uuid
UUID, foreign key
9f5b610c...
Must exist in Drones table
org_uuid
UUID, foreign key
c3e5d0f1...
Must exist in Organisations table
transfer_uuid
UUID, foreign key
d2c3b4a5...
Must exist in Drone Transfers table
owned_since
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp
status
int/enum
1
Must be valid drone_ownership_status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
11. Missions
A Mission is a high-level operational grouping used for obtaining airspace permissions over a broad area. It can involve multiple drones, pilots, and flight plans, enabling strategic deconfliction. The mission's geographic coverage is stored in the Constraint Engine and referenced here via constraint_uuid.
mission_id
int, unique
340
Auto-incrementing, must be unique
mission_uuid
UUID, unique, primary key
9b13ce82-99ab-41d4-a716-446655440010
Must be a valid UUID v4, unique
mission_udai_id
string, unique
UDAI-MIS-09
Format: UDAI-MIS-[0-9]+, unique
org_uuid
UUID, foreign key
c3e5d0f1...
Must exist in Organisations table
created_by_user_uuid
UUID, foreign key
550e8400...
Must exist in Users table
mission_name
string
Pipeline Inspection North
Max 150 characters
mission_description
string
Survey of segment 4
Max 1000 characters, nullable
start_time
timestamp
2025-07-05T08:00:00Z
Valid ISO 8601 timestamp, future date
end_time
timestamp
2025-07-07T18:00:00Z
Valid ISO 8601 timestamp, > start_time
constraint_uuid
UUID, foreign key
cst-a1b2c3d4...
Must exist in Constraints table
min_height
double
30.0
Metres AGL, >= 0
max_height
double
120.0
Metres AGL, > min_height
drones
array of JSON
[{"drone_uuid":"..."}]
Array of objects; drone_uuid must exist
pilots
array of UUIDs
["550e..."]
All UUIDs must exist in Users table
airspace_restrictions_covered
array of UUIDs
["zone-123..."]
Must exist in Airspace Zones table if provided
permissions
array of JSON
[{"zone":"..."}]
Must match airspace intersection rules
status
int/enum
1
Must be valid mission_status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
12. Flight Plans
A Flight Plan defines the specific operational parameters for a single flight. A Mission contains one or more Flight Plans. The flight's geographic coverage is stored in the Constraint Engine and referenced here via constraint_uuid.
plan_id
int, unique
890
Auto-incrementing, must be unique
plan_uuid
UUID, unique, primary key
f47ac10b-58cc-4372-a567-0eb2c3d47910
Must be a valid UUID v4, unique
plan_udai_id
string, unique
UDAI-PLN-10
Format: UDAI-PLN-[0-9]+, unique
mission_uuid
UUID, foreign key
9b13ce82...
Must exist in Missions table
org_uuid
UUID, foreign key
c3e5d0f1...
Must exist in Organisations table
drone_uuid
UUID, foreign key
9f5b610c...
Must exist in Drones table
user_uuid
UUID, foreign key
550e8400...
Must exist in Users table (the pilot)
payload_id
string
PAY-CA-01
String payload reference
payload_type
string
RGB Camera
Payload description/type
schedule_start_time
timestamp
2025-07-06T09:00:00Z
Valid ISO 8601 timestamp, >= mission start
schedule_end_time
timestamp
2025-07-06T11:00:00Z
Valid ISO 8601 timestamp, <= mission end
constraint_uuid
UUID, foreign key
cst-d4e5f6...
Must exist in Constraints table
min_height
double
30.0
Metres AGL, >= 0
max_height
double
80.0
Metres AGL, > min_height
airspace_restrictions_covered
array of UUIDs
["zone-123..."]
Must exist in Airspace Zones table
permissions
array of JSON
[{"zone":"..."}]
Inherited from or linked to Mission
flight_status
int/enum
1
Must be valid flight_plan_status enum
status
int/enum
1
Must be valid status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
13. Permissions
Represents a request to access a specific restricted or controlled airspace segment, linked to a Mission or Flight Plan. One Permission record per airspace segment per airspace manager. Tracks whether access has been granted or denied.
permission_id
int, unique
921
Auto-incrementing, must be unique
permission_uuid
UUID, unique, primary key
e5f6g7h8-1234-abcd-8901-cdef56789012
Must be a valid UUID v4, unique
permission_udai_id
string, unique
UDAI-PRM-105
Format: UDAI-PRM-[0-9]+, unique
parent_type
string
MISSION
Must be "MISSION" or "FLIGHT_PLAN"
parent_uuid
UUID
9b13ce82...
Must exist in parent table
zone_uuid
UUID, foreign key
zone-123...
Must exist in Airspace Zones table
manager_org_uuid
UUID, foreign key
c3e5d0f1...
Must exist in Organisations table (the approving authority)
airspace_type
string
RESTRICTED_ZONE
E.g., RESTRICTED_ZONE, PROHIBITED_ZONE
permission_status
int/enum
1
Must be valid permission_status enum
permission_reference
string
AAI-NOC-442
Reference ID given by airspace manager
valid_from
timestamp
2025-07-05T08:00:00Z
Valid ISO 8601 timestamp
valid_to
timestamp
2025-07-07T18:00:00Z
Valid ISO 8601 timestamp, > valid_from
remarks
string, nullable
Approved with caution
Max 1000 characters
created_at
timestamp
2025-07-02T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
14. Flight Sessions
A Flight Session represents a live operational window during which a drone actively executes a Flight Plan. A Flight Plan can have one or more sessions (e.g. re-attempts or paused/resumed flights).
session_id
int, unique
150
Auto-incrementing, must be unique
session_uuid
UUID, unique, primary key
9f3a1b2c-4d5e-6f7a-8b9c-0d1e2f3a4b5c
Must be a valid UUID v4, unique
session_udai_id
string, unique
UDAI-SES-38
Format: UDAI-SES-[0-9]+, unique
plan_uuid
UUID, foreign key, nullable
f47ac10b...
Optional for ad-hoc flights. Must exist in Flight Plans if provided.
drone_uuid
UUID, foreign key
9f5b610c...
Must exist in Drones table
user_uuid
UUID, foreign key
550e8400...
Must exist in Users table (the pilot)
session_token
string
tok_aBcD...
Secure token generated for telemetry ingest
session_start_time
timestamp
2025-07-06T09:12:00Z
Valid ISO 8601 timestamp
session_end_time
timestamp
2025-07-06T10:45:00Z
Valid ISO 8601 timestamp, > session_start_time
session_expiry
timestamp
2025-07-06T11:00:00Z
Valid ISO 8601 timestamp
drone_start_latitude
double
28.6139
Valid latitude (-90 to 90)
drone_start_longitude
double
77.2090
Valid longitude (-180 to 180)
drone_end_latitude
double
28.6145
Valid latitude (-90 to 90)
drone_end_longitude
double
77.2100
Valid longitude (-180 to 180)
pilot_start_latitude
double
28.6130
Valid latitude (-90 to 90)
pilot_start_longitude
double
77.2085
Valid longitude (-180 to 180)
pilot_end_latitude
double
28.6130
Valid latitude (-90 to 90)
pilot_end_longitude
double
77.2085
Valid longitude (-180 to 180)
total_area
double
120.5
Sq km or hectares, >= 0
total_distance
double
15.0
Kilometers flown, >= 0
total_endurance
double
93.0
Flight minutes, >= 0
timestamp
timestamp
2025-07-06T09:12:00Z
Record creation time
15. Flight Telemetry
Not stored in the relational database.
Flight telemetry (drone position, heading, speed, altitude at ~1 Hz) is handled entirely outside the relational/geospatial database:
Ingestion: Drone GCS sends telemetry frames via WebSocket to the UDAI platform in real time
Live fan-out: The platform fans out live frames to authorised subscribers (Airspace Monitors, Airspace Managers) via WebSocket β see WebSocket Telemetry Endpoints
Buffering & storage: Frames are buffered in-memory and periodically flushed to structured files or blob storage (e.g. Parquet/GeoParquet per session) for post-flight analysis
No SQL/PostGIS writes occur at telemetry frequency
The only relational DB record updated during a live session is the Flight Session row (start/end times, final computed totals).
16. Airspace Zones
Defines a geographically bounded airspace segment with a restriction type and operational limits. The zone's geometry is stored in the Constraint Engine and referenced here via constraint_uuid.
zone_id
int, unique
85
Auto-incrementing, must be unique
zone_uuid
UUID, unique, primary key
a1b2c3d4-e5f6-7890-abcd-ef1234567890
Must be a valid UUID v4, unique
zone_udai_id
string, unique
UDAI-ZON-14
Format: UDAI-ZON-[0-9]+, unique
zone_name
string
Airport Red Zone - DEL
Max 150 characters
restriction_type
int/enum
1
Must be valid airspace_restriction_type enum
airspace_zone_type
int/enum
2
1= ΰ€°ΰ₯ΰ€‘, 2= ΰ€ΰ€―ΰ€°ΰ€ͺΰ₯ΰ€°ΰ₯ΰ€, 3= ΰ€ΰ€¨ΰ€° 4= ΰ€ΰ€ΰ€ΰ€°, etc.
constraint_uuid
UUID, foreign key
cst-z1y2...
Must exist in Constraints table
min_height
double
0.0
Metres AGL, >= 0
max_height
double
400.0
Metres AGL, > min_height
active_from
timestamp, nullable
null
Must be timestamp if temporary restriction
active_to
timestamp, nullable
null
Must be timestamp if temporary restriction
status
int/enum
1
Must be valid status enum
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
system
References a valid user_uuid or system
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
system
References a valid user_uuid or system
17. Airspace Zone Memberships
Links an organisation to an Airspace Zone. An organisation of type Airspace Manager has authority to manage and evaluate permission requests for the zone. An organisation of type Airspace Monitor can view live activity within the zone.
membership_id
int, unique
12
Auto-incrementing, must be unique
membership_uuid
UUID, unique, primary key
f0154cf0-fef0-4c3e-b816-43e34b9cfbc1
Must be a valid UUID v4, unique
membership_udai_id
string, unique
UDAI-ARM-03
Format: UDAI-ARM-[0-9]+, unique
zone_uuid
UUID, foreign key
a1b2c3d4...
Must exist in Airspace Zones table
org_uuid
UUID, foreign key
9f3a1b2c...
Must exist in Organisations table
membership_type
int/enum
1
1=Manager, 2=Monitor
assigned_by_user_uuid
UUID, foreign key
550e8400...
Must exist in Users table
status
int/enum
1
Must be valid status enum
created_at
timestamp
2025-07-02T08:00:00Z
Valid ISO 8601 timestamp, immutable
created_by
string
550e8400...
References a valid user_uuid
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
updated_by
string
550e8400...
References a valid user_uuid
18. Constraints
The Constraint Engine stores all geospatial shapes for the UDAI platform in a single PostGIS table. Each constraint record represents the geometry of one business object (Mission, Flight Plan, Airspace Zone, etc.). Business tables store only a constraint_uuid FK instead of inline GeoJSON.
This enables a single ST_Intersects query across all constraint types simultaneously β the foundation for strategic deconfliction and airspace awareness.
constraint_id
int, unique
8542
Auto-incrementing, must be unique
constraint_uuid
UUID, unique, primary key
cst-d4e5f6g7-h8i9-j0k1-l2m3-n4o5p6q7r8s9
Must be a valid UUID v4, unique
constraint_type
int/enum
MISSION
MISSION, FLIGHT_PLAN, AIRSPACE_ZONE, GEOFENCE, DRONE_CORRIDOR, WEATHER_CELL
ref_uuid
UUID
9b13ce82...
UUID of business record this belongs to
geometry_2d
GeoJSON Polygon
{"type":"Polygon",...}
Must be a valid PostGIS/GeoJSON Polygon
min_height
double
30.0
Metres AGL, lower bound volume, >= 0
max_height
double
120.0
Metres AGL, upper bound volume, > min_height
active_from
timestamp, nullable
2025-07-05T08:00:00Z
Valid ISO 8601 timestamp if active
active_to
timestamp, nullable
2025-07-07T18:00:00Z
Valid ISO 8601 timestamp, > active_from
metadata
JSONB
{"priority": "high", "restriction_level": 2}
Application specific JSON metadata
created_at
timestamp
2025-07-01T08:00:00Z
Valid ISO 8601 timestamp, immutable
updated_at
timestamp
2025-07-04T10:30:00Z
Valid ISO 8601 timestamp, >= created_at
| updated_at | timestamp | 2025-07-04T10:30:00Z | Valid ISO 8601 timestamp, >= created_at |
Last updated