Creates a reusable collection source.
Validates the source config (tool / inline / RAG-index minimum fields) for its kind.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The tenant identifier
The source definition.
Where items come from, for a collection pipeline and for a work shape alike: an existing paged integration "list" tool driven headlessly (no LLM), an inline set supplied by a caller, or a RAG index. Stored as JSONB on Fruxon.Model.CollectionPipelines.CollectionPipeline and on a trigger's work shape.
One type, because there was never a second kind of source. A work shape carried its own
near-identical copy of this block — same integration config, same list tool, same records path,
same cursor parameter, same item-id path — differing only by the durable watermark below. Two
declarations of one idea meant two validators, two editors, and an adapter in admission that
copied one into the other field by field before every fetch.
The watermark quartet (Fruxon.Model.CollectionPipelines.CollectionSourceConfig.CursorPath, Fruxon.Model.CollectionPipelines.CollectionSourceConfig.WatermarkParamName,
Fruxon.Model.CollectionPipelines.CollectionSourceConfig.WatermarkFormat, Fruxon.Model.CollectionPipelines.CollectionSourceConfig.OverlapWindowMs) is what the work shape genuinely
added, and it is useful to any source that is listed repeatedly: Fruxon.Model.CollectionPipelines.CollectionSourceConfig.CursorParamName is
within-run paging and persists nothing between runs, so without it a Gmail source cannot
express after:<last admitted> and re-lists the mailbox on every pass. A pipeline that
leaves them null behaves exactly as it did before.
How each source item is mapped into the per-item agent run's inputs. Values are dotted paths into
the item (e.g. fields.summary) or {{template}} interpolations over it — the same
resolution the tool-source mapper uses. Stored as JSONB on Fruxon.Model.CollectionPipelines.CollectionPipeline.
Response Body
curl -X POST "https://api.fruxon.com/v1/tenants/string/collectionSources" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "00000000-0000-0000-0000-000000000000",
"tenantId": "00000000-0000-0000-0000-000000000000",
"createdAt": 0,
"modifiedAt": 0,
"displayName": "string",
"active": false,
"source": {
"kind": "TOOL",
"ragAssetId": "string",
"ragReadMode": "DOCUMENTS",
"ragSearch": "string",
"pageSize": 0,
"integrationConfigId": "string",
"listToolId": "string",
"getToolId": "string",
"recordsPath": "string",
"cursorParamName": "string",
"parameters": {},
"itemIdPath": "string",
"sinkTargetPath": "string",
"skipWhen": {
"match": "ALL",
"conditions": []
},
"sourceUrlPath": "string",
"cursorPath": "string",
"watermarkParamName": "string",
"watermarkFormat": "RAW",
"overlapWindowMs": 0,
"flattenSheetRows": false
},
"inputMapping": {
"userQuery": "string",
"parameters": {},
"attachmentUrlPath": "string"
}
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}