Retrieve the time-tracker view for a Forecast project. The response is a hierarchical structure — sections → operations → activities — together with project-level totals (AFE, P10, P90, variance) derived from the project's last active simulation result.
This endpoint is intended for external reporting tools that need a single read-only snapshot of where a well is against plan: actual hours/days, planned (AFE) hours/days, and the P10/P90 confidence bounds from the Monte Carlo simulation.
Get section / operation / activity breakdown and totals for a project
Path Parameters
| Name | Type | Required | Description |
|---|
projectId | string (UUID) | ✓ | The project / estimate identifier (from List Estimates) |
Parameters
| Name | Type | Required | Description |
|---|
companyId | string (UUID) | ✓ | The company the project belongs to. Used to resolve the well's display name in the response. |
Headers
| Name | Value | Description |
|---|
apikey | YOUR_API_KEY | Your Forecast API authentication key |
Response shape
Top-level totals
| Field | Type | Description |
|---|
wellName | string | Display name of the well (resolved via companyId) |
wellId | string (UUID) | Well identifier |
startTime | ISO 8601 string | Start time of the first operation |
endTime | ISO 8601 string | Finish time of the last operation |
totalAFE | number (days) | Sum of operation AFE hours, divided by 24 and rounded to 2 decimals |
totalP10 | number (days) | P10 of cumulative duration from the active simulation, in days |
totalP90 | number (days) | P90 of cumulative duration from the active simulation, in days |
totalVariance | number (hours) | Sum across activities of actual − afe where actual is set; positive = over plan |
sections | array | Sections, each containing its operations and activities (see below) |
Section object
| Field | Type | Description |
|---|
sectionId | string (UUID) | Section identifier |
projectSectionId | string (UUID) | Project-scoped section identifier |
sectionName | string | Display name (e.g. 26" Surface) |
operations | array | Operations belonging to this section |
Operation object
Each entry under operations describes a single planned operation. Activity-level identifiers (sectionsOperationActivityId, activityCode, operationCode, subOperationCode) are stripped at this level — they live on the activities themselves.
| Field | Type | Description |
|---|
timeTrackerItemId | string (UUID) | Operation identifier — use this as :taskId in Update Time Tracker Task |
originId | string | Source identifier from the simulation payload |
parentId | string | null | null for an operation (operations have no parent) |
name | string | Operation display name |
status | string | Status as recorded in the time tracker (e.g. completed, in_progress) |
start / finish | ISO 8601 string | Operation start and finish |
estimate | number | null | Editable estimate in hours |
actual | number | null | Recorded actual in hours |
afe | number | AFE-budgeted duration in hours |
depthFrom / depthTo | number | Planned depth range for the operation |
actualDepth | number | Actual depth reached |
plannedDepth | number | Planned depth at end of operation |
npt | number | null | Non-productive time in hours |
wow | number | null | Waiting-on-weather time in hours |
sectionsOperation | object | null | { sectionsOperationId, name } — reference into the sections-data-structure catalog |
activities | array | Activities for this operation |
Activity object
| Field | Type | Description |
|---|
timeTrackerItemId | string (UUID) | Activity identifier — use this as :taskId in Update Time Tracker Task |
originId | string | Source identifier from the simulation payload |
parentId | string (UUID) | Parent operation's timeTrackerItemId |
name | string | Activity display name |
status | string | Status as recorded in the time tracker |
estimate | number | null | Editable estimate in hours |
actual | number | null | Recorded actual in hours |
afe | number | AFE-budgeted duration in hours |
actualDepth / plannedDepth | number | Actual / planned depth at end of activity |
depthTo | number | Planned end depth |
npt | number | null | Non-productive time in hours |
wow | number | null | Waiting-on-weather time in hours |
activity | string | null | Activity classification code |
sectionsOperationActivity | object | null | { sectionsOperationActivityId, name } — reference into the sections-data-structure catalog |
The fields sectionsOperationActivityId, activityCode, operationCode, subOperationCode, start and finish are present in the underlying record but are intentionally omitted from the response at the activity level — start and finish are only meaningful on the parent operation.
Notes
companyId is effectively required. It is a query parameter, but it is consumed when resolving the well's display name. Calling without it will fail to look up the well.
- No active simulation → empty object. If the project has never had a successful simulation, the endpoint returns
{} with HTTP 200. Treat the absence of wellName as the empty signal.
- Units.
totalAFE, totalP10, and totalP90 are in days (the underlying simulation values are in hours and divided by 24 server-side). estimate, actual, afe, npt, wow, and totalVariance are in hours.
- Variance sign. Positive
totalVariance = activities ran longer than AFE. Activities with actual === null are skipped from the variance sum.
- The P10/P90 figures come from the last active simulation result for the project. If you re-run the simulation, the totals can change without any data being patched.