x-cpod-domain: rfp
RFP
RFP intake, question library, and responses.
Try in explorer
client.rfpRfpRecord
An incoming RFP being tracked.
REST path
/api/v1/rfp/recordsOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.rfp.records.list()
// create:
await client.rfp.records.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. |
| rfp_number | string | Counter-driven, human-readable RFP number. |
| title | string | Short descriptive title for the RFP. |
| description | string | Detailed description of the RFP. |
| account_id | string | ID of the sourcing customer Account. |
| procurement_contact_id | string | ID of the buyer-side procurement Contact. |
| deal_id | string | ID of the linked Deal once qualified. |
| owner_id | string | ID of the bid manager / deal owner (usr-<uuid>). |
| department_group_id | string | ID of the routing target department Group. |
| parent_rfp_id | string | ID of the parent RFP for amendments or addenda. |
| child_rfp_ids | json | IDs of child RFPs (amendments, addenda). |
| status | string | Current lifecycle status of the RFP. |
| bid_decision | string | Bid/no-bid decision. |
| phase | string | Current authoring phase of the RFP. |
| submission_deadline | date-time | ISO 8601 timestamp of the submission deadline. |
| submission_method | string | How the proposal should be submitted (e.g. 'portal:SAP-Ariba'). |
| sla | json | SLA tracking: dueAt, breached flag, and optional breachedAt. |
| sla_milestones | json | Ordered list of SLA milestones with per-milestone status. |
| mail_metadata | json | Outlook mail metadata if source=outlook. |
| attachment_refs | json | MinIO keys for source RFP attachments. |
| proposal_refs | json | MinIO keys for generated proposal documents. |
| extracted_document_ids | json | IDs of documents ingested into cpod-arai (doc-<uuid>). |
| question_ids | json | IDs of all extracted RfpQuestions (rfq-<uuid>). |
| response_ids | json | IDs of all drafted RfpResponses (rfa-<uuid>). |
| ai_enrichment | json | AI-generated enrichment: execSummary, riskScore, pricingHint, recommendation, modelUsed, generatedAt. |
| reviewers | json | IDs of required reviewers (usr-<uuid>). |
| approvers | json | IDs of required approvers (usr-<uuid>). |
| submitted_at | date-time | ISO 8601 timestamp when the proposal was submitted. |
| submitted_by | string | ID of the user who submitted the proposal. |
| outcome | json | Outcome record: status, decidedAt, decidedBy, notes. |
| custom_fields | json | Tenant-defined custom fields. |
| tags | json | Free-form tags. |
| version | number | Optimistic concurrency version counter. |
| source | enum | Channel through which the RFP was received.outlookportalmanualapiemail_forward |
| priority | enum | Priority assigned to this RFP.lowmediumhighurgent |
| metrics | json | Rollup status counts (questions/responses totals). |
| file_bytes | string | Base64-encoded bytes of the source RFP file. |
| file_name | string | Original file name of the source RFP. |
| file_size_bytes | integer | Size of the source file in bytes. |
| file_mime | string | MIME type of the source file. |
RfpQuestion
A question pulled from an RfpRecord.
REST path
/api/v1/rfp/questionsOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.rfp.questions.list()
// create:
await client.rfp.questions.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. |
| rfp_record_id | string | ID of the parent RfpRecord (rfp-<uuid>). |
| section | string | Section of the RFP this question belongs to. |
| subsection | string | Sub-section within the section. |
| order_index | number | Position of this question in the source RFP. |
| text | string | The question text as extracted from the source RFP. |
| question_type | string | Classification of the expected answer format. |
| ai_extracted | boolean | True if this question was extracted by an LLM. |
| extraction_confidence | number | LLM confidence score for the extraction (0–1). |
| required_attachments | json | List of attachment names required to answer this question. |
| assigned_to | string | ID of the SME assigned to answer this question (usr-<uuid>). |
| status | string | Current answer status. |
| priority | string | Priority assigned to this question. |
| tags | json | Free-form tags. |
| version | number | Optimistic concurrency version counter. |
RfpResponse
An answer to an RfpQuestion.
REST path
/api/v1/rfp/responsesOperations
listgetcreateupdateSDK
// list — returns only your records; add filters/search:
await client.rfp.responses.list()
// create:
await client.rfp.responses.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. |
| rfp_record_id | string | ID of the parent RfpRecord. |
| question_id | string | ID of the RfpQuestion this response answers (rfq-<uuid>). |
| text | string | Final answer text (human-edited or approved). |
| ai_draft | string | Original LLM-generated draft, preserved for diff comparison. |
| human_edited | boolean | True if a human has edited the AI draft. |
| citations | json | RAG chunk citations supporting this response. |
| attachment_refs | json | MinIO keys for supporting documents attached to this response. |
| status | string | Current review status of the response. |
| word_count | number | Word count of the final text. |
| tokens_in | number | LLM input token count for the generation call. |
| tokens_out | number | LLM output token count for the generation call. |
| model_used | string | LLM model identifier used for generation. |
| trace_id | string | ID of the coreiq Trace for the generation call (trc-<uuid>). |
| authored_by | string | ID of the last human author (usr-<uuid>). |
| reviewed_by | json | IDs of reviewers (usr-<uuid>). |
| reviewed_at | date-time | ISO 8601 timestamp of the review. |
| approved_by | string | ID of the approver (usr-<uuid>). |
| approved_at | date-time | ISO 8601 timestamp of approval. |
| comments | json | Inline review comment threads. |
| version_history | json | Append-only version history of the response text. |
| tags | json | Free-form tags. |
| version | number | Optimistic concurrency version counter. |