RAW.OPERATING_IO — Schema Profile
Source: Operating.io (resource planning / time)
Profiled: 2026-03-02
Tables
| Table | Rows | Last Altered | Structure |
|---|---|---|---|
| RAW_GROUPS | 2 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_PERSONS | 56 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_PERSON_ALLOCATIONS | 62 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_PROJECTS | 143 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_PROJECT_ALLOCATIONS | 62 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_TASKS | 7 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_TIME_ENTRIES | 2,483 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_WORK_EFFORTS | 515 | 2026-03-02 | ID, RAW_DATA, CREATED_AT |
| RAW_WORK_EFFORT_STATUSES | 2 | 2026-03-02 | ID, 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
- Flatten RAW_DATA: Use
RAW_DATA:field::TYPEfor each field - Time entries:
seconds / 3600for hours;RAW_DATA:date::DATEfor entry date - Joins:
personId→ RAW_PERSONS.ID,projectId→ RAW_PROJECTS.ID - Work efforts:
percentageis in basis points (400000 = 400%); divide by 10000 for %