Docs

Docs

x-cpod-domain: rfp

RFP

RFP intake, question library, and responses.

RfpRecord

An incoming RFP being tracked.

REST path/api/v1/rfp/records
Operations
listgetcreateupdate
SDK
// 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",
})
FieldTypeDescription
id*uuidServer-assigned ULID with type prefix (e.g. per_…).
tenant_id*stringTenant scope — auto-stamped from the caller's JWT.
app_idstringApp 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-timeServer stamp.
updated_at*date-timeServer stamp; updated on every patch.
created_byuuidPerson id from the caller's JWT (sub).
updated_byuuidPerson id from the last writer's JWT (sub).
sourcestringProvenance tag — defaults to 'edm'.
source_typeenumWhere the write originated. Defaults to 'api'.frontendbackendserversystemapi
is_deletedbooleanSoft-delete flag. Excluded from default list queries.
deleted_atdate-timeStamped when soft-deleted; null otherwise.
deleted_byuuidPerson id who soft-deleted; null otherwise.
schema_versionnumberDocument schema version. Bumped on incompatible writes.
rfp_numberstringCounter-driven, human-readable RFP number.
titlestringShort descriptive title for the RFP.
descriptionstringDetailed description of the RFP.
account_idstringID of the sourcing customer Account.
procurement_contact_idstringID of the buyer-side procurement Contact.
deal_idstringID of the linked Deal once qualified.
owner_idstringID of the bid manager / deal owner (usr-<uuid>).
department_group_idstringID of the routing target department Group.
parent_rfp_idstringID of the parent RFP for amendments or addenda.
child_rfp_idsjsonIDs of child RFPs (amendments, addenda).
statusstringCurrent lifecycle status of the RFP.
bid_decisionstringBid/no-bid decision.
phasestringCurrent authoring phase of the RFP.
submission_deadlinedate-timeISO 8601 timestamp of the submission deadline.
submission_methodstringHow the proposal should be submitted (e.g. 'portal:SAP-Ariba').
slajsonSLA tracking: dueAt, breached flag, and optional breachedAt.
sla_milestonesjsonOrdered list of SLA milestones with per-milestone status.
mail_metadatajsonOutlook mail metadata if source=outlook.
attachment_refsjsonMinIO keys for source RFP attachments.
proposal_refsjsonMinIO keys for generated proposal documents.
extracted_document_idsjsonIDs of documents ingested into cpod-arai (doc-<uuid>).
question_idsjsonIDs of all extracted RfpQuestions (rfq-<uuid>).
response_idsjsonIDs of all drafted RfpResponses (rfa-<uuid>).
ai_enrichmentjsonAI-generated enrichment: execSummary, riskScore, pricingHint, recommendation, modelUsed, generatedAt.
reviewersjsonIDs of required reviewers (usr-<uuid>).
approversjsonIDs of required approvers (usr-<uuid>).
submitted_atdate-timeISO 8601 timestamp when the proposal was submitted.
submitted_bystringID of the user who submitted the proposal.
outcomejsonOutcome record: status, decidedAt, decidedBy, notes.
custom_fieldsjsonTenant-defined custom fields.
tagsjsonFree-form tags.
versionnumberOptimistic concurrency version counter.
sourceenumChannel through which the RFP was received.outlookportalmanualapiemail_forward
priorityenumPriority assigned to this RFP.lowmediumhighurgent
metricsjsonRollup status counts (questions/responses totals).
file_bytesstringBase64-encoded bytes of the source RFP file.
file_namestringOriginal file name of the source RFP.
file_size_bytesintegerSize of the source file in bytes.
file_mimestringMIME type of the source file.

RfpQuestion

A question pulled from an RfpRecord.

REST path/api/v1/rfp/questions
Operations
listgetcreateupdate
SDK
// 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",
})
FieldTypeDescription
id*uuidServer-assigned ULID with type prefix (e.g. per_…).
tenant_id*stringTenant scope — auto-stamped from the caller's JWT.
app_idstringApp 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-timeServer stamp.
updated_at*date-timeServer stamp; updated on every patch.
created_byuuidPerson id from the caller's JWT (sub).
updated_byuuidPerson id from the last writer's JWT (sub).
sourcestringProvenance tag — defaults to 'edm'.
source_typeenumWhere the write originated. Defaults to 'api'.frontendbackendserversystemapi
is_deletedbooleanSoft-delete flag. Excluded from default list queries.
deleted_atdate-timeStamped when soft-deleted; null otherwise.
deleted_byuuidPerson id who soft-deleted; null otherwise.
schema_versionnumberDocument schema version. Bumped on incompatible writes.
rfp_record_idstringID of the parent RfpRecord (rfp-<uuid>).
sectionstringSection of the RFP this question belongs to.
subsectionstringSub-section within the section.
order_indexnumberPosition of this question in the source RFP.
textstringThe question text as extracted from the source RFP.
question_typestringClassification of the expected answer format.
ai_extractedbooleanTrue if this question was extracted by an LLM.
extraction_confidencenumberLLM confidence score for the extraction (0–1).
required_attachmentsjsonList of attachment names required to answer this question.
assigned_tostringID of the SME assigned to answer this question (usr-<uuid>).
statusstringCurrent answer status.
prioritystringPriority assigned to this question.
tagsjsonFree-form tags.
versionnumberOptimistic concurrency version counter.

RfpResponse

An answer to an RfpQuestion.

REST path/api/v1/rfp/responses
Operations
listgetcreateupdate
SDK
// 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",
})
FieldTypeDescription
id*uuidServer-assigned ULID with type prefix (e.g. per_…).
tenant_id*stringTenant scope — auto-stamped from the caller's JWT.
app_idstringApp 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-timeServer stamp.
updated_at*date-timeServer stamp; updated on every patch.
created_byuuidPerson id from the caller's JWT (sub).
updated_byuuidPerson id from the last writer's JWT (sub).
sourcestringProvenance tag — defaults to 'edm'.
source_typeenumWhere the write originated. Defaults to 'api'.frontendbackendserversystemapi
is_deletedbooleanSoft-delete flag. Excluded from default list queries.
deleted_atdate-timeStamped when soft-deleted; null otherwise.
deleted_byuuidPerson id who soft-deleted; null otherwise.
schema_versionnumberDocument schema version. Bumped on incompatible writes.
rfp_record_idstringID of the parent RfpRecord.
question_idstringID of the RfpQuestion this response answers (rfq-<uuid>).
textstringFinal answer text (human-edited or approved).
ai_draftstringOriginal LLM-generated draft, preserved for diff comparison.
human_editedbooleanTrue if a human has edited the AI draft.
citationsjsonRAG chunk citations supporting this response.
attachment_refsjsonMinIO keys for supporting documents attached to this response.
statusstringCurrent review status of the response.
word_countnumberWord count of the final text.
tokens_innumberLLM input token count for the generation call.
tokens_outnumberLLM output token count for the generation call.
model_usedstringLLM model identifier used for generation.
trace_idstringID of the coreiq Trace for the generation call (trc-<uuid>).
authored_bystringID of the last human author (usr-<uuid>).
reviewed_byjsonIDs of reviewers (usr-<uuid>).
reviewed_atdate-timeISO 8601 timestamp of the review.
approved_bystringID of the approver (usr-<uuid>).
approved_atdate-timeISO 8601 timestamp of approval.
commentsjsonInline review comment threads.
version_historyjsonAppend-only version history of the response text.
tagsjsonFree-form tags.
versionnumberOptimistic concurrency version counter.