x-cpod-domain: project
Projects
Projects, tasks, sprints, features.
Try in explorer
client.projectsProject
A delivery effort with a start, end, and team.
REST path
/api/v1/edm-projects/projectsOperations
listgetcreateupdatedeleteSDK
// list — returns only your records; add filters/search:
await client.projects.projects.list()
// create:
await client.projects.projects.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| owner_id | string | User ID of the project manager. Format: usr-<uuid>. |
| name | string | Human-readable project name. |
| key | string | Short project code used as a prefix for task numbers. |
| kind | string | Project classification. |
| account_id | string | Account ID if this is a client-facing project. |
| deal_id | string | Source deal ID, if this project was created from a deal. |
| status | string | Current project lifecycle status. |
| priority | string | Project priority level. |
| start_date | date-time | Planned project start date. |
| end_date | date-time | Planned project end date. |
| actual_start_date | date-time | Actual project start date. |
| actual_end_date | date-time | Actual project completion date. |
| budget | json | Budget tracking for the project. |
| member_ids | json | User IDs of project members. Format: usr-<uuid>. |
| members | json | Project members with their roles. |
| group_ids | json | Group IDs of owning teams. Format: grp-<uuid>. |
| repository_refs | json | Linked source code repositories. |
| description | string | Free-text project description. |
| objectives | json | Free-text project goals. |
| linked_objective_ids | json | Cross-links to OKR Objective records. Format: obj-<uuid>. |
| attachment_refs | json | References to attached documents or files. |
| custom_fields | json | Arbitrary key-value extension fields. |
| tags | json | Flat string tags for filtering and grouping. |
| version | number | Optimistic-concurrency version counter. |
| due_date | date-time | Project due date. |
Task
A unit of work within a Project.
REST path
/api/v1/edm-projects/tasksOperations
listgetcreateupdatedeleteSDK
// list — returns only your records; add filters/search:
await client.projects.tasks.list()
// create:
await client.projects.tasks.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| project_id | string | Parent project ID. Format: prj-<uuid>. |
| parent_task_id | string | Parent task ID for subtask hierarchies. |
| sprint_id | string | Sprint ID if this task is committed to a sprint. |
| feature_id | string | Feature ID if this task is grouped under a feature. |
| title | string | Short descriptive title for the task. |
| description | string | Detailed task description. Supports Markdown. |
| task_number | string | Human-readable task number scoped to the project key. |
| status | string | Current task status. |
| priority | string | Task priority level. |
| story_points | number | Agile story point estimate. |
| estimated_hours | number | Estimated hours to complete. |
| actual_hours | number | Actual hours logged against this task. |
| assignee_id | string | User ID of the assignee. Format: usr-<uuid>. |
| reviewer_ids | json | User IDs of reviewers. |
| labels | json | Free-form label strings for categorisation. |
| due_date | date-time | Task due date. |
| completed_at | date-time | ISO 8601 timestamp when the task was completed. |
| blocked_by_task_ids | json | Task IDs that must be completed before this task can proceed. |
| duplicates_task_id | string | Task ID that this task duplicates. |
| repository_ref | json | Linked pull request or branch reference. |
| comment_count | number | Number of comments on this task. |
| attachment_refs | json | References to attached files. |
| custom_fields | json | Arbitrary key-value extension fields. |
| tags | json | Flat string tags for filtering and grouping. |
| version | number | Optimistic-concurrency version counter. |
| start_date | date-time | Task start date. |
| estimate_hours | number | Effort estimate in hours. |
Sprint
A time-boxed iteration of work in a Project.
REST path
/api/v1/edm-projects/sprintsOperations
listgetcreateupdatecloseSDK
// list — returns only your records; add filters/search:
await client.projects.sprints.list()
// create:
await client.projects.sprints.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| project_id | string | Parent project ID. |
| name | string | Human-readable sprint name. |
| week_key | string | ISO 8601 week identifier (e.g., '2026-W22'). |
| start_date | date-time | Sprint start date. |
| end_date | date-time | Sprint end date. |
| status | string | Current sprint status. |
| goal | string | Sprint goal statement. |
| committed_points | number | Story points committed at sprint start. |
| completed_points | number | Story points completed by the end of the sprint. |
| task_ids | json | Task IDs committed to this sprint. |
| feature_ids | json | Feature IDs committed to this sprint. |
| lead_id | string | User ID of the sprint lead. Format: usr-<uuid>. |
| retrospective | json | Sprint retrospective notes. Populated after the sprint completes. |
| ai_plan | string | LLM-generated sprint plan. |
| tags | json | Flat string tags for filtering and grouping. |
| version | number | Optimistic-concurrency version counter. |
| starts_at | date-time | Sprint start timestamp. |
| ends_at | date-time | Sprint end timestamp. |
Feature
A larger unit of work that may span multiple Tasks.
REST path
/api/v1/edm-projects/featuresOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.projects.features.list()
// create:
await client.projects.features.create({
id: "rec_01HXEXAMPLE",
tenant_id: "example tenant_id",
created_at: "2026-01-01T00:00:00Z",
updated_at: "2026-01-01T00:00:00Z",
app_id: "example app_id",
created_by: "rec_01HXEXAMPLE",
})| Field | Type | Description |
|---|---|---|
| id* | uuid | Server-assigned ULID with type prefix (e.g. per_…). |
| tenant_id* | string | Tenant scope — auto-stamped from the caller's JWT. |
| app_id | string | App scope. Stamped ONLY when the caller's JWT was minted for a specific Application (integration API keys). Absent for human-user sessions. Filters reads when present. |
| created_at* | date-time | Server stamp. |
| updated_at* | date-time | Server stamp; updated on every patch. |
| created_by | uuid | Person id from the caller's JWT (sub). |
| updated_by | uuid | Person id from the last writer's JWT (sub). |
| source | string | Provenance tag — defaults to 'edm'. |
| source_type | enum | Where the write originated. Defaults to 'api'.frontendbackendserversystemapi |
| is_deleted | boolean | Soft-delete flag. Excluded from default list queries. |
| deleted_at | date-time | Stamped when soft-deleted; null otherwise. |
| deleted_by | uuid | Person id who soft-deleted; null otherwise. |
| schema_version | number | Document schema version. Bumped on incompatible writes. |
| project_id | string | Optional anchor project ID. |
| title | string | Feature title. |
| description | string | Detailed description of the feature. |
| category | string | Kanban column or category slug. |
| priority | string | Feature priority level. |
| status | string | Current feature lifecycle status. |
| source_url | string | URL of the original source document or issue. |
| sprint_id | string | Sprint ID if this feature is committed to a single sprint. |
| section_ids | json | Section IDs if this feature is split into sections. |
| assignee_ids | json | User IDs assigned to this feature. |
| story_points | number | Agile story point estimate for the feature. |
| goals | json | Free-text acceptance criteria or goals. |
| ai_plan | string | LLM-generated implementation plan. |
| linked_task_ids | json | Task IDs implementing this feature. |
| linked_deal_id | string | Deal ID if this feature is commercially driven. |
| linked_rfp_id | string | RFP record ID if this feature was sourced from an RFP. |
| github_issue_ref | json | Linked GitHub issue reference. |
| status_history | json | Audit log of status transitions. |
| tags | json | Flat string tags for filtering and grouping. |
| version | number | Optimistic-concurrency version counter. |
| name | string | Feature name. |
| owner_id | uuid | User ID of the feature owner. |