RAW.OPERATING_IO — Schema Profile

Source: Operating.io (resource planning / time)
Profiled: 2026-03-02


Tables

TableRowsLast AlteredStructure
RAW_GROUPS22026-03-02ID, RAW_DATA, CREATED_AT
RAW_PERSONS562026-03-02ID, RAW_DATA, CREATED_AT
RAW_PERSON_ALLOCATIONS622026-03-02ID, RAW_DATA, CREATED_AT
RAW_PROJECTS1432026-03-02ID, RAW_DATA, CREATED_AT
RAW_PROJECT_ALLOCATIONS622026-03-02ID, RAW_DATA, CREATED_AT
RAW_TASKS72026-03-02ID, RAW_DATA, CREATED_AT
RAW_TIME_ENTRIES2,4832026-03-02ID, RAW_DATA, CREATED_AT
RAW_WORK_EFFORTS5152026-03-02ID, RAW_DATA, CREATED_AT
RAW_WORK_EFFORT_STATUSES22026-03-02ID, RAW_DATA, CREATED_AT

All tables: Same structure — ID, RAW_DATA (VARIANT), CREATED_AT. Data lives in JSON.


RAW_TIME_ENTRIES — RAW_DATA Structure

{
  "id": "312883058",
  "date": "2023-08-14",
  "personId": "37939",
  "projectId": "81533",
  "taskId": "4243",
  "seconds": 172800,
  "approvalStatus": "NOT_SUBMITTED",
  "invoiced": false,
  "createdAt": "2025-08-07T20:03:54.353Z",
  "updatedAt": "2025-08-07T20:03:54.353Z",
  "externalSystemName": "api",
  "rate": { "amount": 0, "currency": "USD" }
}
  • Date range: 2023-08-14 → 2026-02-27
  • Grain: One row per time entry

Extract columns: RAW_DATA:date::DATE, RAW_DATA:personId::TEXT, RAW_DATA:projectId::TEXT, RAW_DATA:seconds::NUMBER, RAW_DATA:approvalStatus::TEXT, RAW_DATA:updatedAt::TIMESTAMP


RAW_WORK_EFFORTS — RAW_DATA Structure

{
  "id": "446976",
  "from": "2025-01-10",
  "through": "2025-03-31",
  "positionId": "120310",
  "statusId": "573",
  "percentage": 400000,
  "allocationPercentage": 4.0,
  "createdAt": "2025-03-11T14:43:18.618Z",
  "updatedAt": "2025-03-20T21:39:44.277Z"
}
  • Date range: 2024-07-01 → 2026-06-12
  • Grain: One row per allocation period (person to position)

RAW_PERSONS — RAW_DATA Structure

{
  "id": "37936",
  "name": "Uttam Kumaran",
  "fullname": "Uttam Kumaran",
  "email": "uttam@brainforge.ai",
  "employmentStart": "2023-06-01",
  "companyId": "167",
  "siteId": "483",
  "isExternal": false,
  "externalPersons": [ { "externalId": "308409077", "externalSystemName": "hubspot", ... } ],
  "createdAt": "...",
  "updatedAt": "..."
}

RAW_PROJECTS — RAW_DATA Structure

{
  "id": "81533",
  "name": "Time off",
  "clientId": "36052",
  "companyId": "167",
  "projectNumber": "1",
  "projectOwnerId": "37936",
  "statusId": "577",
  "isTimeOff": true,
  "createdAt": "...",
  "updatedAt": "..."
}

Staging Model Guidance

  1. Flatten RAW_DATA: Use RAW_DATA:field::TYPE for each field
  2. Time entries: seconds / 3600 for hours; RAW_DATA:date::DATE for entry date
  3. Joins: personId → RAW_PERSONS.ID, projectId → RAW_PROJECTS.ID
  4. Work efforts: percentage is in basis points (400000 = 400%); divide by 10000 for %