FruxonDocs
ApiKnowledge bases

Merges clusters exactly as the consolidator proposed them.

For each named cluster, writes the article from its newest proposal (`:propose` over the same report) — the consolidator is not asked again, so what is merged is the text that was read. The caller is recorded as the reviewer of every merged article. Refused with 400 when a named cluster has no merge proposal. Members are revalidated against the report; a cluster whose documents changed since is reported STALE and left alone. Queues an approve run and returns it.

POST
/v1/tenants/{tenant}/knowledgeBases/{knowledgeBase}/consolidations/{consolidation}:approve
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

knowledgeBase*string

The knowledge base id.

Formatuuid
consolidation*string

The report-only run the proposals were made over.

Formatuuid
tenant*string

The tenant identifier

The clusters to merge and the report version they were read from.

clusterIds?array<string>

Which of the report's clusters to merge. Selective on purpose: a report is reviewed cluster by cluster, and an all-or-nothing apply would make one bad candidate reject every good one.

expectedReportVersion?integer

The report version the caller read. Sent back so a report produced by a different shape cannot be applied through semantics it was never written under.

Formatint32
[key: string]?never

Response Body

curl -X POST "https://api.fruxon.com/v1/tenants/string/knowledgeBases/497f6eca-6276-4993-bfeb-53cbbbba6f08/consolidations/497f6eca-6276-4993-bfeb-53cbbbba6f08:approve" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "00000000-0000-0000-0000-000000000000",
  "knowledgeBaseId": "00000000-0000-0000-0000-000000000000",
  "status": "QUEUED",
  "trigger": "MANUAL",
  "consolidationPolicyVersion": 0,
  "consolidationCadence": "MANUAL",
  "consolidationMode": "REPORT_ONLY",
  "requestedBy": "string",
  "reportOnly": false,
  "reportOnlyReason": "string",
  "similarityThreshold": 0,
  "maxClusterSize": 0,
  "recentWriteWindowMinutes": 0,
  "basedOnRunId": "00000000-0000-0000-0000-000000000000",
  "clusterIds": [
    "00000000-0000-0000-0000-000000000000"
  ],
  "reviewerNote": "string",
  "startedAt": 0,
  "completedAt": 0,
  "error": "string",
  "report": {
    "version": 0,
    "knowledgeBaseId": "00000000-0000-0000-0000-000000000000",
    "reportOnly": false,
    "consolidatorAgentId": "string",
    "similarityThreshold": 0,
    "maxClusterSize": 0,
    "recentWriteWindowMinutes": 0,
    "documentsConsidered": 0,
    "documentsSkippedAsRecentlyModified": 0,
    "embeddingsComputed": 0,
    "embeddingsReused": 0,
    "embeddingTokens": 0,
    "embeddingModel": "string",
    "clusters": [
      {
        "clusterId": "00000000-0000-0000-0000-000000000000",
        "index": 0,
        "members": [],
        "maxSimilarity": 0,
        "minSimilarity": 0,
        "sectionOverlap": null,
        "outcome": "UNSPECIFIED",
        "classification": "UNSPECIFIED",
        "survivorId": null,
        "proposedTitle": "string",
        "proposedBodyMarkdown": "string",
        "proposedTags": [],
        "authorAgentId": "string",
        "archivedIds": [],
        "note": "string",
        "conflicts": [],
        "executionRecordId": null,
        "decidedBy": "string",
        "earlierDecision": null
      }
    ],
    "repeatedFacts": [
      {
        "factId": "00000000-0000-0000-0000-000000000000",
        "title": "string",
        "minSimilarity": 0,
        "occurrences": [],
        "check": null
      }
    ],
    "sectionsCompared": 0,
    "repeatedFactsSkippedReason": "string",
    "openingBoilerplate": [
      "string"
    ],
    "clustersFound": 1,
    "clustersMerged": 0,
    "clustersKeptSeparate": 0,
    "clustersFailed": 0,
    "clustersProposed": 0,
    "clustersRelated": 0,
    "documentsArchived": 0
  },
  "createdAt": 0,
  "modifiedAt": 0
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}
Empty
Empty
{
  "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
}