flow
Ingest Revit Export
PUT-is-submit a contract-v1.1 gzip artifact, queue an ImportRun, process it into the definition graph, rematerialize the summary, and poll the import-run log (ADR-0103).
FlowStatus: Implemented in api-v1
Overview
This flow is the cloud half of the Revit export seam. The Revit Connector add-in produces the contract-v1 JSONL. Project Delivery Graph owns ImportRun and the definition graph the artifact becomes.
Plugin sequence (also on the OpenAPI operations):
GET /api/v1/party-directory/projects— user selects adomain_idPOSTupload-url using that id (manifest.projectIdmust equal it)PUTgzip touploadUrl(local-devputLocalRevitImportArtifact). PUT is submit — 200 withuploaded: true+idmeans queued. Do not register. Do not POST process.- Poll
GETuntilready/failed/deleted.readyincludes rematerialize of the Airtable graph view. - Fallback:
POSTregister only whenuploadUrlis a different-host storage URL that did not queue. - Steward:
POST …/actions/delete-graph(wipe imported nodes, markdeleted, keep gzip);POST …/actions/retryrequeues the same run fromfailed | deleted.
ENABLE_CRON_JOBS=true is required for the minute cron in local. Production still uses the claimant (ADR-0079). Local PUT uses setImmediate when cron is off (ADR-0103).
HTTP
Do not invent other operation ids. Do not copy request/response schemas here; use generated OpenAPI.
| Step | Method and path | OpenAPI operationId |
|---|---|---|
| List projects | GET /api/v1/party-directory/projects | listPartyDirectoryProjects |
| Upload URL | POST /api/v1/projects/{id}/revit-imports/upload-url | requestRevitImportUploadUrl |
| Local PUT (submit) | PUT /api/v1/projects/{id}/revit-imports/local-upload | putLocalRevitImportArtifact |
| Register (fallback) | POST /api/v1/projects/{id}/revit-imports | registerRevitImport |
| List log | GET /api/v1/projects/{id}/revit-imports | listRevitImports |
| One run | GET /api/v1/projects/{id}/revit-imports/{runId} | getRevitImport |
| Process now | POST /api/v1/projects/{id}/revit-imports/{runId}/process | processRevitImport |
| Delete imported graph | POST /api/v1/projects/{id}/revit-imports/{runId}/actions/delete-graph | deleteRevitImportGraph |
| Retry same run | POST /api/v1/projects/{id}/revit-imports/{runId}/actions/retry | retryRevitImport |
| Summary | GET /api/v1/projects/{id}/definition-graph/summary | getProjectDefinitionGraphSummary |
| Rematerialize | POST /api/v1/projects/{id}/definition-graph/summary/rematerialize | rematerializeProjectDefinitionGraphSummary |
Code References
apps/api-v1/src/modules/project-delivery-graph/core/application/use-cases/RegisterSourceImportUseCase.tsapps/api-v1/src/modules/project-delivery-graph/core/application/use-cases/ProcessSourceImportUseCase.tsapps/api-v1/src/modules/project-delivery-graph/core/application/use-cases/DeleteImportedGraphUseCase.tsapps/api-v1/src/modules/project-delivery-graph/core/application/use-cases/RetrySourceImportUseCase.tsapps/api-v1/src/modules/project-delivery-graph/core/application/use-cases/ReadRevitImportsUseCase.tsapps/api-v1/src/modules/project-delivery-graph/core/application/use-cases/RematerializeSummaryViewUseCase.tsapps/api-v1/src/modules/project-delivery-graph/adapters/inbound/rest/revit-imports/revitImports.openapi.ts- ADR-0103