User Opens Application
Step 1
Contract Selection
Trigger: Page loads
API #1 GET /company/v1/contracts
Purpose Fetch available contracts to display
When Once when page loads
Returns List of contracts with allowed parameters
User Action: Selects a contract and clicks "Use Contract"
Step 2
Task Creation Component
User Action: Picks location on map, sets imaging mode, sets time window, clicks "Create Task"
API #2 POST /tasking/v2/tasks
Purpose Submit task to ICEYE for satellite imaging
When User clicks "Create Task" button
Returns Task with status "RECEIVED"
Step 3
Task Monitoring Component
Trigger: Component mount + every 5 seconds
API #3 GET /tasking/v2/tasks/{id}
Purpose Check current task status
Frequency Every 5 seconds until terminal state (DONE, FAILED, REJECTED, CANCELED)
Polling Loop: This API is called repeatedly every 5 seconds.
Status = ACTIVE, FULFILLED, or DONE?
API #4 GET /tasking/v2/tasks/{id}/scene
Purpose Get imaging parameters (time, angle, direction)
Frequency Only when status changes to ACTIVE, FULFILLED, or DONE
Why reload? Scene evolves from planned (ACTIVE) to actual (FULFILLED/DONE) parameters.
Status = FULFILLED or DONE?
API #5 GET /tasking/v2/tasks/{id}/products
Purpose Get download URLs for captured imagery
Frequency Only when status changes to FULFILLED or DONE
Why reload? FULFILLED has SLA products, DONE includes all additional products.
Status = DONE, FAILED, REJECTED, or CANCELED?
Stop Polling - Terminal state reached
Optional: Task Cancellation
User Action: Clicks "Cancel Task" (only available when status is RECEIVED or ACTIVE)
Cancel PATCH /tasking/v2/tasks/{id}
Purpose Cancel task before imaging starts
When User clicks "Cancel Task" (only if RECEIVED or ACTIVE)
Body { "status": "CANCELED" }
Next polling cycle will detect CANCELED status and stop automatically.