Okouro docs

Three read-only endpoints surface the numbers management cares about: an adaptive dashboard, a staffing forecast, and mission-budget health. All are GET requests that return 200 OK.

Dashboard

GET /kpi/dashboard takes no parameters and adapts to the caller’s role. A manager sees the whole team; a consultant sees only their own slice.

GET /kpi/dashboard HTTP/1.1
Authorization: Bearer <access_token>

The response (DashboardSnapshot) mixes team-level and personal blocks. Blocks that do not apply to your role come back as null rather than being omitted:

  • Team blocks (not for consultant-role callers): team, active_mission_count, allocation, ending_soon.
  • Review block (admins and managers): review_queue.
  • Personal blocks (holders of a linked consultant profile): my_assignments, my_time_off, current_sheet.
  • is_empty is true when there is nothing to show yet.

Because the shape adapts, check each block for null before reading it.

Staffing

GET /kpi/staffing returns a per-consultant, per-period staffing grid. It is restricted to admin and executive roles (403 otherwise).

GET /kpi/staffing?granularity=month&from=2026-01-01&to=2026-06-30 HTTP/1.1
Authorization: Bearer <access_token>
ParamMeaningDefault
fromstart datesix months back
toend datesix months ahead
granularityweek, month, or quartermonth
consultant_idnarrow to one consultantall consultants

The report has three parallel arrays: periods, consultants, and totals. Each consultant row carries a cells array aligned to periods; each cell reports capacity_days, actual_days, projected_days, and staffing_percent. Periods are tagged past, current, or forecast, so you can render history and projection from the same grid.

Mission budgets

GET /kpi/mission-budgets compares budget, forecast, and variance for a set of missions at once. It is open to business-viewer roles (admin, operations, executive).

GET /kpi/mission-budgets?ids=0190a1c2-...,0190a1c3-... HTTP/1.1
Authorization: Bearer <access_token>

ids is a comma-separated list of mission ids (required). Each row reports name, status, sale_mode, health (unknown, on_track, at_risk, over), progress_percent, budget_revenue, budget_cost, forecast_margin, and variance_margin. Cost and margin fields are null for consultant-role callers. For the full breakdown of a single mission, use GET /missions/{id}/budget (see Run a mission).

Endpoints at a glance

ActionMethodPathRoles
DashboardGET/kpi/dashboardall (adapts to role)
StaffingGET/kpi/staffingadmin, executive
Mission budgetsGET/kpi/mission-budgetsadmin, operations, executive