Skip to main content

Catalog

Generated from apiome-rest/openapi.yaml (API version 1.204.1) — do not edit by hand. How to authenticate is on the REST API reference.

Tag: catalog · 10 operations

GET /v1/catalog/{tenant_slug}​

List Catalog Items

List all catalog items for a tenant.

Returns the same envelope as GET /v1/projects/{tenant_slug} (so the Catalog screen can be cloned from the Projects dashboard) restricted to the non-publishable slice, with each item also carrying the latest revision's format/protocol/source provenance.

Supports authentication via:

  • JWT token in Authorization header (Bearer token)
  • API key in X-API-Key header

Args: tenant_slug: The tenant slug. include_deleted: Include rows with deleted_at set (for trash / restore flows). auth_data: Authentication data (injected by dependency).

Returns: List of catalog items for the tenant (active first when include_deleted is set).

Operation id: list_catalog_items_v1_catalog__tenant_slug__get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
include_deletedquerybooleannoWhen true, include soft-deleted catalog items (active items listed first).
identityGroupIdquerystring or nullnoWhen set, return only catalog items in this cross-format identity group (MFI-6.4).
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for list catalog items.application/json array of CatalogItemSchema
422Validation Errorapplication/json HTTPValidationError

POST /v1/catalog/{tenant_slug}/analysis-metrics​

Record a privacy-safe catalog analysis metric

Increment an in-process counter and emit a structured catalog.analysis log line for UI/ops telemetry (CPDO-4.2). Payload is a strict whitelist of kinds, controlled surface names, and integer/duration fields — never node names, values, or source content.

Operation id: record_catalog_analysis_metric_v1_catalog__tenant_slug__analysis_metrics_post

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Request body (required)

Request body for record a privacy-safe catalog analysis metric.

Responses

StatusDescriptionBody
200Successful response for record a privacy-safe catalog analysis metric.application/json CatalogAnalysisMetricResponse
422Validation Errorapplication/json HTTPValidationError

GET /v1/catalog/{tenant_slug}/{item_id}​

Get Catalog Item

Get a specific catalog item by ID, with the MFI-23.9 detail enrichments.

Returns the MFI-23.2 list envelope plus a normalized-content summary (services/operations/ types/channels counts), a source material descriptor (both derived from the latest revision's format_metadata) and, from MFI-25.2, a parsed list of paradigm-tagged entity groups derived from the item's canonical model ([] when no model can be reconstructed from the captured source). A publishable Project is intentionally not returned here: only the non-publishable slice is a catalog item, so requesting a Project's id (or an unknown id) yields 404.

Supports authentication via JWT token or API key.

Args: tenant_slug: The tenant slug. item_id: The catalog item ID. auth_data: Authentication data (injected by dependency).

Returns: The catalog item details, including its normalized summary and source descriptor.

Operation id: get_catalog_item_v1_catalog__tenant_slug___item_id__get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for get catalog item.application/json CatalogItemDetailSchema
422Validation Errorapplication/json HTTPValidationError

GET /v1/catalog/{tenant_slug}/{item_id}/analysis​

Get Catalog Item Analysis

Return the full native payload analysis of a catalog item's latest revision (CPDO-1.1).

The detail read (GET …/{item_id}) embeds only the analysis summary — status and counts, no payload material — so it stays cheap regardless of how large the analysed source was. This endpoint serves the record itself: the native tree in the analyzer's own vocabulary (X12 interchange → functional group → transaction set → segment → element; copybook level → PIC → OCCURS → 88-condition), its source locations, analyzer warnings, and the redaction metadata stating what was withheld.

Authorization. The summary is readable by anyone who can read the catalog item; the tree is gated on imports:view, the permission that governs imported source material, because a native tree is a structural description of the payload itself. valueVisibility may further restrict what is returned — it can never widen it, since values the store never held cannot be re-materialised.

Absence is declared. A revision imported before this contract existed, or one whose source was never captured, returns a record with status: "unavailable", an empty tree, and a reason code saying which. It never returns a fabricated tree.

Like the other catalog reads this is restricted to the non-publishable slice — a Project's id, or an unknown id, yields 404 — and authenticated via JWT token or API key.

Args: tenant_slug: The tenant slug. item_id: The catalog item ID (a project id). value_visibility: Optional read-time value-visibility restriction. max_nodes: Optional read-time node budget for a lazy fetch of an oversized tree. max_depth: Optional read-time depth budget, applied with max_nodes. auth_data: Authentication data (injected by dependency).

Returns: The :class:~app.payload_analysis.PayloadAnalysisRecord for the item's latest revision.

Operation id: get_catalog_item_analysis_v1_catalog__tenant_slug___item_id__analysis_get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
valueVisibilityquerystring or nullnoOptional read-time restriction on observed payload values: none | structural | full. It can only narrow what the stored record carries, never widen it.
maxNodesqueryinteger or nullnoOptional read-time node budget for a lazy first fetch of an oversized tree. Keeps the same breadth-first prefix write-time bounding keeps; truncation is reported on the record's metrics, never silent (CPDO-4.2).
maxDepthqueryinteger or nullnoOptional read-time depth budget, applied with maxNodes (CPDO-4.2).
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for get catalog item analysis.application/json PayloadAnalysisRecord
422Validation Errorapplication/json HTTPValidationError

GET /v1/catalog/{tenant_slug}/{item_id}/conversions​

List a catalog item's conversion provenance history

Return a catalog item's full conversion history, newest first (CPDO-3.3).

One entry per convert/re-convert from the append-only conversion_provenance ledger: the target Project + revision it produced, the fidelity outcome, the converter tool versions, the content-addressed evidence snapshot id (and whether that snapshot is actually stored and replayable), and the digest of the exact source text converted. currentSourceHash digests the item's currently captured source so a client can mark rows whose sourceHash differs as historic — "the source has changed since this conversion was approved".

Exposes the same class of metadata the unguarded catalog list/detail already carry on their conversion back-link, so like them it requires authentication + tenant scoping only; the per-conversion evidence graph read is the gated one. Restricted to the non-publishable slice (a Project's id, or an unknown id, yields 404).

Args: tenant_slug: The tenant slug. item_id: The catalog item ID (a project id). auth_data: Authentication data (injected by dependency).

Returns: The :class:~app.models.CatalogConversionHistoryResponse, newest first.

Operation id: get_catalog_conversion_history_v1_catalog__tenant_slug___item_id__conversions_get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for list a catalog item's conversion provenance history.application/json CatalogConversionHistoryResponse
422Validation Errorapplication/json HTTPValidationError

GET /v1/catalog/{tenant_slug}/{item_id}/conversions/{provenance_id}/evidence​

Page through the stored evidence snapshot of one historical conversion

Return one page of the exact evidence graph a historical conversion was approved with.

Served from the content-addressed snapshot store (CPDO-3.3, V215) — never rebuilt — so the graph is the one the user reviewed at commit time, regardless of how the source or the converter changed since. A GET, unlike the projection's POST: the stored snapshot already fixed its defaults, so there is no body to agree on. A snapshot that cannot be served degrades to an explicit HTTP 200 state (predates_snapshots / snapshot_missing / unreadable), never an error — pre-CPDO-3.3 conversions are a normal part of any history.

Carries the same class of source-native coordinates as the projection read, so it is gated on the same imports:view permission, checked after the item lookup so a cross-tenant id 404s rather than confirming its existence with a 403. A provenance row that does not belong to this item also 404s, so one item's evidence cannot be probed through another's URL.

Args: tenant_slug: The tenant slug. item_id: The catalog item ID (a project id). provenance_id: The conversion_provenance row whose snapshot to page. scope: Restrict the page to one edge scope; omit to page every scope. cursor: Opaque page cursor. limit: Maximum edges per page. auth_data: Authentication data (injected by dependency).

Returns: The :class:~app.models.ConversionEvidenceResponse — snapshot state, summary, and one page.

Raises: HTTPException: 400 for an unknown scope, 404 for an unknown item/provenance row, 422 for a malformed cursor.

Operation id: get_catalog_conversion_evidence_v1_catalog__tenant_slug___item_id__conversions__provenance_id__evidence_get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
provenance_idpathstringyesPath parameter identifying the provenance id segment.
scopequerystring or nullnoRestrict the page to one edge scope: checklist / construct / loss / analysis.
cursorquerystring or nullnoOpaque cursor from a previous page; omit to start at the beginning.
limitqueryintegernoMaximum edges per page; clamped server-side.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for page through the stored evidence snapshot of one historical conversion.application/json ConversionEvidenceResponse
422Validation Errorapplication/json HTTPValidationError

POST /v1/catalog/{tenant_slug}/{item_id}/convert​

Convert Catalog Item

Convert a catalog item to OpenAPI — a dry-run preview or a committed Project (MFI-22.6).

The single convert verb behind the UI preview (MFI-22.4), CLI (apiome convert), and API:

  • dryRun=true (the default) reconstructs the item's canonical model from its captured source, emits the OpenAPI 3.1 document (MFI-22.1) and analyzes its fidelity (MFI-22.3), and returns the fidelity report + the would-be document with no side effects — nothing is created.
  • dryRun=false runs the convert-to-project/version commit job (MFI-22.5): it mints a new Project + v1 (or appends a new version to the previously-converted Project on a re-convert), captures its lint score, persists provenance, and returns the created ids + the report.

The dryRun query param is authoritative for the side-effect decision (falling back to the body's dryRun), so a malformed/omitted body defaults to a safe dry-run and never silently commits. target is openapi today; other targets yield 400 (the verb is target-generic for future emitters). Optional defaults (info title/version, servers) fill cheap gaps only where the source is empty.

A catalog item's id is a project id; this is restricted to the non-publishable slice, so a Project's id — or an unknown id — yields 404. An item with no captured source material to reconstruct from yields 422. Authenticated via JWT token or API key.

Args: tenant_slug: The tenant slug (used to reconstruct/commit the OpenAPI document). item_id: The catalog item ID (a project id). request: The conversion target + dryRun + optional defaults. dry_run: Authoritative dryRun query override (None falls back to the body). auth_data: Authentication data (injected by dependency).

Returns: A :class:ConvertDryRunResponse for a dry-run, or a :class:ConvertCommitResponse for a commit.

Operation id: convert_catalog_item_v1_catalog__tenant_slug___item_id__convert_post

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
dryRunqueryboolean or nullnoAuthoritative side-effect switch; overrides the body's dryRun when present.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Request body (optional)

Request body for convert catalog item.

Responses

StatusDescriptionBody
200Successful response for convert catalog item.application/json any
422Validation Errorapplication/json HTTPValidationError

GET /v1/catalog/{tenant_slug}/{item_id}/lint​

Lint Catalog Item

Score a catalog item's latest revision and return itemized lint findings (MFI-23.10).

The catalog analog of GET /v1/versions/{tenant_slug}/{project_id}/{version_record_id}/lint: it lets the Catalog card/detail lint orbs open the same server-computed lint report the Projects screens use, populated from the item's own revision rather than browser-local history.

A catalog item's id is a project id (the Catalog is the non-publishable slice of projects, MFI-23.1), so the latest revision is resolved here and fed to the shared :func:app.lint_routes.build_lint_report. Like the other catalog reads this is restricted to the non-publishable slice — a Project's id, or an unknown id, yields 404 — and authenticated via JWT token or API key.

Args: tenant_slug: The tenant slug (used to reconstruct the OpenAPI document). item_id: The catalog item ID (a project id). auth_data: Authentication data (injected by dependency).

Returns: The server-computed quality score, A-F grade and itemized findings for the latest revision.

Operation id: lint_catalog_item_v1_catalog__tenant_slug___item_id__lint_get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for lint catalog item.application/json LintReportResponse
422Validation Errorapplication/json HTTPValidationError

POST /v1/catalog/{tenant_slug}/{item_id}/projection​

Page through a catalog item's conversion projection manifest

Return one bounded page of the item's source → OpenAPI projection manifest (CPDO-1.3).

The graph API behind the fidelity report: where the report says how much a conversion would lose, this says which source construct became which OpenAPI pointer, and why anything did not. Rebuilds the deterministic manifest for the item's latest revision — the same manifest a dry-run and a commit reference by hash, so a page fetched here describes the conversion the user is about to run — and pages its edges.

Strictly read-only despite the POST verb, which carries the defaults body: gap-filling defaults are folded into the snapshot hash, so a projection previewed with different defaults from the ones the conversion will use would describe a different conversion. Nothing is created and nothing is persisted.

What it exposes, and why it is gated. The page carries source-native coordinates — a construct's native name/id, the line or offset a parser recorded, and payload-analysis node ids — so a reader can open the source viewer where the evidence is. It carries no payload values at all. That is the same class of data as the analysis read (CPDO-1.1), so it is gated on the same imports:view permission, checked after the item lookup so a cross-tenant id 404s rather than confirming its existence with a 403.

Like every other catalog read this is restricted to the non-publishable slice (a Project's id, or an unknown id, yields 404) and authenticated via JWT token or API key.

Args: tenant_slug: The tenant slug. item_id: The catalog item ID (a project id). request: Target + defaults + page window (scope / cursor / limit). auth_data: Authentication data (injected by dependency).

Returns: The :class:~app.models.CatalogProjectionResponse — the snapshot summary and one page.

Raises: HTTPException: 400 for an unsupported target or scope, 404 for an unknown item, 422 when the item has no reconstructable source or the cursor is malformed.

Operation id: get_catalog_projection_v1_catalog__tenant_slug___item_id__projection_post

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Request body (optional)

Request body for page through a catalog item's conversion projection manifest.

Responses

StatusDescriptionBody
200Successful response for page through a catalog item's conversion projection manifest.application/json CatalogProjectionResponse
422Validation Errorapplication/json HTTPValidationError

GET /v1/catalog/{tenant_slug}/{item_id}/source​

Get Catalog Item Source

Serve a catalog item's original source material (MFI-23.9): viewable / downloadable.

Resolves what the import captured onto the item's format_metadata:

  • inline content — streamed back as a downloadable attachment (typed by source format);
  • a source URL (when no content was captured) — answered with a redirect to that URL;
  • neither — 404, since the raw source has not (yet) been captured for this item.

Authorization and audit (CPDO-4.2). The raw source is the most sensitive read on the catalog surface — it is the payload itself, not a description of it — so it is gated on the same imports:view permission as the analysis tree and the projection graph, checked after the item lookup so a cross-tenant id 404s rather than confirming its existence with a 403. Every successful serve writes an access_audit row (catalog.source.view) recording who read it and how it was answered; the row carries no source content.

Like the other catalog reads this is restricted to the non-publishable slice (a Project's id, or an unknown id, yields 404) and authenticated via JWT token or API key.

Args: tenant_slug: The tenant slug. item_id: The catalog item ID. auth_data: Authentication data (injected by dependency).

Returns: A StreamingResponse of the captured source, or a RedirectResponse to the source URL.

Operation id: get_catalog_item_source_v1_catalog__tenant_slug___item_id__source_get

Parameters

NameInTypeRequiredDescription
tenant_slugpathstringyesURL-safe tenant slug that scopes the request.
item_idpathstringyesCatalog item identifier.
authorizationheaderstring or nullnoJWT bearer token for authenticated access (Authorization: Bearer <token>).
X-API-Keyheaderstring or nullnoTenant-scoped API key used as an alternative to JWT bearer authentication.

Responses

StatusDescriptionBody
200Successful response for get catalog item source.application/json any
422Validation Errorapplication/json HTTPValidationError

Schemas used​

CatalogAnalysisMetricRequest​

A privacy-safe UI latency report for a catalog analysis surface (CPDO-4.2).

A strict whitelist: one kind, a controlled surface name, and numbers. Unknown fields are rejected (extra="forbid") so a client cannot smuggle payload material into telemetry.

PropertyTypeRequiredDescription
kind"ui_latency"yesPrivacy-safe metric kind (whitelist).
surfacestringyesWhich UI surface is reporting (controlled vocabulary, e.g. format_tab).
latency_msnumber or nullnoWall-clock latency the surface measured.
page_totalinteger or nullnoOptional integer row/edge total (no labels).

CatalogAnalysisMetricResponse​

Acknowledgement that a privacy-safe metric was recorded.

PropertyTypeRequiredDescription
recordedbooleannoRecorded.
kindstringyesKind.

CatalogConversionHistoryResponse​

GET /v1/catalog/{tenant_slug}/{item_id}/conversions — a catalog item's conversion history, newest first (CPDO-3.3).

currentSourceHash is the digest of the item's currently captured source, so a client can mark rows whose sourceHash differs as historic ("the source has changed since"); null when no source is captured or the digest could not be computed.

PropertyTypeRequiredDescription
itemIdstringyesThe catalog item id.
currentSourceHashstring or nullnoDigest of the item's currently captured source text, or null.
conversionsarray of ConversionProvenanceEntrynoProvenance rows, newest first.

CatalogItemDetailSchema​

A catalog item with the MFI-23.9 detail enrichments layered onto the MFI-23.2 list shape.

Returned by GET /v1/catalog/{tenant_slug}/{item_id}: the same envelope as :class:CatalogItemSchema plus a normalized-content summary, a source material descriptor (both derived from the latest revision's format_metadata, see catalog_detail.py) and, from MFI-25.2, a parsed list of paradigm-tagged entity groups derived from the canonical model (see catalog_parsed_model.py). parsed is [] when no model can be reconstructed from the item's captured source. Sparse until the import path records that provenance.

From CPDO-1.1 it also carries analysis: the summary of the revision-scoped native payload analysis (:mod:app.payload_analysis). The summary carries status and counts only — never payload material — so it is readable by anyone who can read the item; the native tree itself is a separate, permission-gated request to …/{item_id}/analysis. A revision that has never been analysed reports a declared unavailable status with a reason code, never a fabricated tree.

PropertyTypeRequiredDescription
idstringyesStable resource identifier.
tenant_idstringyesTenant that owns the resource.
creator_idstring or nullnoCreator ID.
namestringyesHuman-readable name.
descriptionstring or nullnoFree-text description.
slugstringyesURL-safe identifier.
enabledbooleannoWhether the resource is active.
deleted_atstring (date-time) or string or nullnoDeleted At timestamp (ISO 8601).
metadataobject or nullnoAdditional JSON metadata bag.
qualityScoreinteger or nullnoQuality Score.
qualityGradestring or nullnoQuality Grade.
versionsCountintegernoNumber of versions.
publishablebooleannoPublishable.
sourceFormatstring or nullnoSource Format.
protocolstring or nullnoProtocol.
formatMetadataobject or nullnoFormat Metadata.
toolVersionsobject or nullnoTool Versions.
creator_namestring or nullnoCreator Name.
creator_emailstring or nullnoCreator Email.
created_atstring (date-time) or string or nullnoCreation timestamp (ISO 8601).
updated_atstring (date-time) or string or nullnoLast update timestamp (ISO 8601).
conversionCatalogConversionRef or nullnoConversion.
identityGroupIdstring or nullnoIdentity Group ID.
relatedArtifactsarray of RelatedArtifactRefnoRelated Artifacts.
summaryCatalogNormalizedSummarynoShort summary suitable for navigation and reference docs.
sourceCatalogSourceDescriptornoProvenance source for the record (for example human or imported).
parsedarray of CatalogParsedGroupnoParsed.
analysisPayloadAnalysisSummarynoSummary of the revision-scoped native payload analysis: status, reason code, analyzer identity and node counts. Carries no payload material; fetch the native tree from GET /v1/catalog/{tenant_slug}/{item_id}/analysis, which requires imports:view.

CatalogItemSchema​

A catalog item (MFI-23.1): an OpenAPI-worthy non-OpenAPI import that is not a publishable Project.

A catalog item is a projection over the same projects + versions tables a Project uses — it is simply the publishable = false slice — so the Catalog screen can clone the Projects dashboard. Alongside the project-compatible fields (id/name/slug/description/timestamps/creator/ qualityScore/qualityGrade) it carries the format/protocol/provenance the import recorded onto its latest revision (MFI-7.1/7.2): sourceFormat, protocol, formatMetadata, and toolVersions. publishable is always False for a catalog item, by construction.

PropertyTypeRequiredDescription
idstringyesStable resource identifier.
tenant_idstringyesTenant that owns the resource.
creator_idstring or nullnoCreator ID.
namestringyesHuman-readable name.
descriptionstring or nullnoFree-text description.
slugstringyesURL-safe identifier.
enabledbooleannoWhether the resource is active.
deleted_atstring (date-time) or string or nullnoDeleted At timestamp (ISO 8601).
metadataobject or nullnoAdditional JSON metadata bag.
qualityScoreinteger or nullnoQuality Score.
qualityGradestring or nullnoQuality Grade.
versionsCountintegernoNumber of versions.
publishablebooleannoPublishable.
sourceFormatstring or nullnoSource Format.
protocolstring or nullnoProtocol.
formatMetadataobject or nullnoFormat Metadata.
toolVersionsobject or nullnoTool Versions.
creator_namestring or nullnoCreator Name.
creator_emailstring or nullnoCreator Email.
created_atstring (date-time) or string or nullnoCreation timestamp (ISO 8601).
updated_atstring (date-time) or string or nullnoLast update timestamp (ISO 8601).
conversionCatalogConversionRef or nullnoConversion.
identityGroupIdstring or nullnoIdentity Group ID.
relatedArtifactsarray of RelatedArtifactRefnoRelated Artifacts.

CatalogProjectionRequest​

Request body for POST /v1/catalog/{tenant_slug}/{item_id}/projection (CPDO-1.3).

Read-only despite the verb: the endpoint rebuilds the deterministic manifest for the item's latest revision and returns one page of it, creating nothing. defaults must match what the conversion would be run with, because gap-filling defaults are folded into the snapshot hash — previewing the projection with different defaults describes a different conversion.

PropertyTypeRequiredDescription
targetstringnoConversion target (only 'openapi' today).
defaultsConversionDefaultsRequest or nullnoThe same gap-filling defaults the conversion would use; folded into the hash.
scopestring or nullnoRestrict the page to one edge scope: checklist / construct / loss / analysis. Omit to page every scope in canonical order.
cursorstring or nullnoOpaque cursor from a previous page; omit to start at the beginning.
limitintegernoMaximum edges per page; clamped server-side to the hard cap.

CatalogProjectionResponse​

One bounded page of a catalog item's conversion projection manifest (CPDO-1.3).

Carries the snapshot summary (hash, tool versions, tallies) alongside the page of edges and the nodes they reference, so a caller can render a page without a second request and can tell — via the hash — whether two pages came from the same snapshot.

PropertyTypeRequiredDescription
itemIdstringyesThe catalog item id.
versionRecordIdstring or nullnoThe source revision the manifest describes.
targetstringnoThe conversion target.
summaryobjectyesThe bounded projection-manifest summary.
pageobjectyesThis page of edges + the nodes they reference.

ConversionEvidenceResponse​

One page of a historical conversion's stored evidence graph (CPDO-3.3).

Serves the exact approved manifest from the content-addressed snapshot store — never a rebuild — so the evidence shown is the evidence the conversion was committed with, regardless of how the source or the converter changed since. summary/page are null exactly when snapshot.status is unavailable; degrade is HTTP 200, never a 5xx.

PropertyTypeRequiredDescription
provenanceIdstringyesThe conversion_provenance row served.
itemIdstring or nullnoCatalog item id, on the catalog surface.
projectIdstring or nullnoTarget Project id, on the project surface.
manifestHashstring or nullnoContent-addressed snapshot id, or null.
sourceHashstring or nullnoDigest of the source text converted, or null.
snapshotConversionSnapshotStateyesSnapshot availability + degrade reason.
summaryobject or nullnoThe bounded manifest summary of the stored snapshot; null when unavailable.
pageobject or nullnoOne page of the stored graph's edges + nodes; null when unavailable.

ConvertCatalogItemRequest​

Request body for POST /v1/catalog/{tenant_slug}/{item_id}/convert (MFI-22.6).

Carries the conversion target (openapi is the only one today, but the verb is target-generic for future emitters), the dryRun flag (the query param is authoritative for the side-effect decision; this mirrors it so a body-only caller still works), and the optional user defaults.

PropertyTypeRequiredDescription
targetstringnoConversion target format (only 'openapi' today).
dry_runbooleannoWhen true, return the fidelity report with no side effects; when false, commit.
defaultsConversionDefaultsRequest or nullnoOptional user-supplied fallbacks applied only where the source is empty.

HTTPValidationError​

Validation error response emitted when request data fails schema checks.

PropertyTypeRequiredDescription
detailarray of ValidationErrornoDetail.

LintReportResponse​

Server-computed quality score + itemized findings for one project version (#3609).

PropertyTypeRequiredDescription
projectIdstringyesProject ID.
versionRecordIdstringyesVersion Record ID.
versionIdstringyesHuman-readable version label (e.g. 1.0.0).
scoreintegeryesDeterministic 0-100 quality score.
gradestringyesA-F letter grade derived from the score.
findingsarray of LintFindingOutyesFindings.
ruleHitsmap of integernoCount of findings per rule id (deterministic).
severityCountsmap of integernoCount of findings per severity (error/warning/info).
categoriesarray of LintCategoryScoreOutnoPer-category 0-100 rollup scores (MFI-25.6), sorted by name — drives the UI's category bars with real values. Empty when no categories apply.
reportFingerprintstringyesStable hash over score, grade, and findings for a fixed input.
baseRevisionIdstring or nullnoBase revision used for breaking-change comparison, when provided.
compatibilityOverallstring or nullnoCompatibility verdict vs base revision (safe/breaking/unknown), when compared.
capturedScoreinteger or nullnoScore persisted on the version at import time (MFI-4.2), if any.
capturedGradestring or nullnoA-F grade persisted on the version at import time, if any.
capturedReportFingerprintstring or nullnoReport fingerprint persisted on the version at import time, if any.
scoreIsStalebooleannoTrue when a captured fingerprint exists and differs from this live report's fingerprint, signalling the persisted score is out of date. Always False when a base revision is compared (the live report folds in extra findings) or when no score has been captured.
guideIdstring or nullnoThe style guide this report was scored under (GOV-1.4). Null when the in-code default guide applied (no guide assigned or resolvable).
guideNamestring or nullnoDisplay name of the applied style guide (e.g. 'Apiome Recommended').
guideSourcestring or nullnoOrigin of the applied guide: builtin | custom | fallback (in-code defaults).
guideRevisionIdstring or nullnoImmutable revision of the applied style guide (GOV-1.6) — the exact ruleset this report was scored against, queryable at GET /v1/style-guides/{tenantSlug}/{guideId}/revisions/{revisionId}. Null when the in-code default guide applied or no revision could be resolved.
algorithmIdstring or nullnoMulti-axis scoring algorithm id (CLX-1.2), e.g. clx-axis-v1.
axesarray of LintAxisOut or nullnoPer-axis scores and coverage (CLX-1.2). Null when not evaluated.
compositeScoreinteger or nullnoWeighted composite when required coverage is met; null otherwise.
compositeGradestring or nullnoA-F grade of the composite; null when compositeScore is null.
requiredCoverageMetboolean or nullnoTrue when required axes (v1: quality) are assessed.

PayloadAnalysisRecord​

A stored analysis: the document plus the identity of the row that holds it.

Returned by the full-analysis endpoint. The identity half is what makes the record citable — a projection manifest (CPDO-1.3) references analysis_id and content_fingerprint, not "the analysis of this item", which would drift.

Attributes: analysis_id: Row id. tenant_id: Owning tenant. project_id: Catalog project the analysed revision belongs to. version_record_id: The analysed source revision. analysis_sequence: Monotonic sequence within the revision; highest is in force. content_fingerprint: SHA-256 over the canonicalized document. analyzed_at: When the record was written. analysis: The document itself.

PropertyTypeRequiredDescription
analysisIdstring or nullnoAnalysis ID.
tenantIdstring or nullnoTenant ID.
projectIdstring or nullnoProject ID.
versionRecordIdstring or nullnoVersion Record ID.
analysisSequenceintegernoAnalysis Sequence.
contentFingerprintstring or nullnoContent Fingerprint.
analyzedAtstring or nullnoAnalyzed At.
analysisPayloadAnalysisDocumentnoAnalysis.