{"openapi":"3.1.0","info":{"title":"EasySMS Mock Control Plane API","version":"1.0.0","summary":"Contract comun pentru UI, integrări și serverul MCP EasySMS.","description":"API executabil pentru clienți, capabilități de canal, cele 45 de blueprint-uri, workflow-uri versionate, hook-uri și simulări. Niciun provider extern nu este apelat: livrările sunt create în outbox cu status simulated."},"servers":[{"url":"https://localhost:3120"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"System"},{"name":"Clients"},{"name":"Templates"},{"name":"Workflows"},{"name":"Runs"},{"name":"Hooks"},{"name":"Messages"},{"name":"Dispatch"}],"paths":{"/api/health":{"get":{"tags":["System"],"security":[],"summary":"Verifică procesul Node și baza mock","responses":{"200":{"description":"Runtime sănătos"},"503":{"description":"Runtime indisponibil"}}}},"/api/openapi.json":{"get":{"tags":["System"],"security":[],"summary":"Descarcă acest contract OpenAPI","responses":{"200":{"description":"Document OpenAPI"}}}},"/api/v1/capabilities":{"get":{"tags":["System"],"summary":"Descrie canalele, scopurile și operațiile de graf acceptate","responses":{"200":{"description":"Capabilități","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Capabilities"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}},"/api/v1/clients/{clientId}":{"get":{"tags":["Clients"],"summary":"Returnează clientul, profilele de canal și consimțămintele","parameters":[{"$ref":"#/components/parameters/ClientId"}],"responses":{"200":{"description":"Client","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Client"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/api/v1/templates":{"get":{"tags":["Templates"],"summary":"Listează blueprint-urile semantice compilate din catalog","parameters":[{"name":"category","in":"query","schema":{"type":"string"}},{"name":"channel","in":"query","schema":{"$ref":"#/components/schemas/DeliveryChannel"}},{"name":"purpose","in":"query","schema":{"$ref":"#/components/schemas/MessagePurpose"}}],"responses":{"200":{"description":"Blueprint-uri","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TemplateSummary"}}}}}}}}}},"/api/v1/templates/{templateId}":{"get":{"tags":["Templates"],"summary":"Returnează manifestul executabil și definițiile mesajelor","parameters":[{"$ref":"#/components/parameters/TemplateId"}],"responses":{"200":{"description":"Blueprint","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/TemplateDetail"}}}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/api/v1/workflows":{"get":{"tags":["Workflows"],"summary":"Listează instanțele de workflow","parameters":[{"name":"status","in":"query","schema":{"$ref":"#/components/schemas/WorkflowStatus"}}],"responses":{"200":{"description":"Workflow-uri","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Workflow"}}}}}}}}}},"/api/v1/workflows/from-template":{"post":{"tags":["Workflows"],"summary":"Creează un draft editabil dintr-un blueprint","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkflowRequest"}}}},"responses":{"201":{"description":"Workflow creat","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"409":{"$ref":"#/components/responses/Conflict"}}}},"/api/v1/workflows/{workflowId}":{"get":{"tags":["Workflows"],"summary":"Citește workflow-ul și hook-ul său","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"responses":{"200":{"description":"Workflow","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}},"404":{"$ref":"#/components/responses/NotFound"}}},"patch":{"tags":["Workflows"],"summary":"Modifică draftul cu optimistic concurrency","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchWorkflowRequest"}}}},"responses":{"200":{"description":"Workflow actualizat","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}},"409":{"$ref":"#/components/responses/Conflict"},"422":{"$ref":"#/components/responses/ValidationFailed"}}}},"/api/v1/workflows/{workflowId}/nodes":{"post":{"tags":["Workflows"],"summary":"Adaugă un nod semantic","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddNodeRequest"}}}},"responses":{"201":{"description":"Nod adăugat","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}},"409":{"$ref":"#/components/responses/Conflict"}}}},"/api/v1/workflows/{workflowId}/nodes/{nodeId}":{"patch":{"tags":["Workflows"],"summary":"Actualizează configurația unui nod","parameters":[{"$ref":"#/components/parameters/WorkflowId"},{"$ref":"#/components/parameters/NodeId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNodeRequest"}}}},"responses":{"200":{"description":"Nod actualizat","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}},"409":{"$ref":"#/components/responses/Conflict"}}},"delete":{"tags":["Workflows"],"summary":"Elimină un nod și opțional unește traseul","parameters":[{"$ref":"#/components/parameters/WorkflowId"},{"$ref":"#/components/parameters/NodeId"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveNodeRequest"}}}},"responses":{"200":{"description":"Nod eliminat","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}},"409":{"$ref":"#/components/responses/Conflict"}}}},"/api/v1/workflows/{workflowId}/connect":{"post":{"tags":["Workflows"],"summary":"Creează o muchie între două noduri","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConnectNodesRequest"}}}},"responses":{"201":{"description":"Muchie creată","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}}}}},"/api/v1/workflows/{workflowId}/disconnect":{"post":{"tags":["Workflows"],"summary":"Șterge o muchie","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DisconnectNodesRequest"}}}},"responses":{"200":{"description":"Muchie eliminată","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Workflow"}}}}}}}}},"/api/v1/workflows/{workflowId}/validate":{"post":{"tags":["Workflows"],"summary":"Validează topologia și configurațiile","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateWorkflowRequest"}}}},"responses":{"200":{"description":"Raport de validare","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ValidationReport"}}}}}}}}},"/api/v1/workflows/{workflowId}/simulate":{"post":{"tags":["Workflows"],"summary":"Execută graful mock și produce trace/deliveries/tasks","parameters":[{"$ref":"#/components/parameters/WorkflowId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulateWorkflowRequest"}}}},"responses":{"201":{"description":"Execuție simulată","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkflowRun"}}}}}},"422":{"$ref":"#/components/responses/ValidationFailed"}}}},"/api/v1/hooks/{hookId}/events":{"post":{"tags":["Hooks"],"summary":"Primește un eveniment pe hook și pornește workflow-ul","parameters":[{"$ref":"#/components/parameters/HookId"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HookEventRequest"}}}},"responses":{"202":{"description":"Eveniment acceptat","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkflowRun"}}}}}},"409":{"$ref":"#/components/responses/Conflict"}}}},"/api/v1/runs":{"get":{"tags":["Runs"],"summary":"Listează execuțiile recente","responses":{"200":{"description":"Execuții","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowRun"}}}}}}}}}},"/api/v1/runs/{runId}":{"get":{"tags":["Runs"],"summary":"Returnează trace-ul complet al unei execuții","parameters":[{"$ref":"#/components/parameters/RunId"}],"responses":{"200":{"description":"Execuție","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/WorkflowRun"}}}}}},"404":{"$ref":"#/components/responses/NotFound"}}}},"/api/v1/messages/test":{"post":{"tags":["Messages"],"summary":"Creează o livrare mock dintr-o definiție de mesaj","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TestMessageRequest"}}}},"responses":{"201":{"description":"Livrare simulată"},"422":{"$ref":"#/components/responses/ValidationFailed"}}}},"/api/v1/dispatch":{"post":{"tags":["Dispatch"],"summary":"Endpoint unificat: rulează una sau mai multe operații prin dispecerul intern (base + input).","description":"Acceptă fie un plic single {base, input, meta}, fie un batch {operations, atomic}. Fiecare operație este rutata la handler-ul înregistrat pentru base (ex: workflow.simulate, node.condition.evaluate, channel.sms.send). Idempotency via meta.idempotencyKey pentru bazele care o suportă. Batch atomic revine complet la prima eroare.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchRequest"}}}},"responses":{"200":{"description":"Rezultatul dispecerului","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchBatchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"409":{"description":"Batch atomic anulat sau conflict idempotency","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DispatchBatchResponse"}}}}}}},"/api/v1/api-keys/rotate":{"post":{"tags":["System"],"summary":"Rotește cheia de lucru și returnează secretul o singură dată","responses":{"201":{"description":"Cheie nouă","content":{"application/json":{"schema":{"type":"object","required":["data"],"properties":{"data":{"type":"object","required":["id","key","prefix","createdAt"],"properties":{"id":{"type":"string"},"key":{"type":"string","writeOnly":true},"prefix":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}}}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"EasySMS API key"}},"parameters":{"ClientId":{"name":"clientId","in":"path","required":true,"schema":{"type":"string"},"example":"2150151"},"TemplateId":{"name":"templateId","in":"path","required":true,"schema":{"type":"string"},"example":"ecommerce"},"WorkflowId":{"name":"workflowId","in":"path","required":true,"schema":{"type":"string"},"example":"wf_ecommerce"},"NodeId":{"name":"nodeId","in":"path","required":true,"schema":{"type":"string"}},"HookId":{"name":"hookId","in":"path","required":true,"schema":{"type":"string"}},"RunId":{"name":"runId","in":"path","required":true,"schema":{"type":"string"}}},"responses":{"BadRequest":{"description":"Cerere invalidă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Cheie lipsă sau invalidă","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Resursa nu există","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"Revizie sau idempotency key în conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"ValidationFailed":{"description":"Graful sau capabilitățile nu permit operația","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"DeliveryChannel":{"type":"string","enum":["sms","whatsapp","email","push"]},"MessagePurpose":{"type":"string","enum":["authentication","transactional","service","security","marketing","newsletter","internal"]},"WorkflowStatus":{"type":"string","enum":["draft","active","paused","archived"]},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"details":{}}}}},"ChannelProfile":{"type":"object","required":["id","channel","address","purposes","status"],"properties":{"id":{"type":"string"},"channel":{"$ref":"#/components/schemas/DeliveryChannel"},"address":{"type":"string"},"provider":{"type":"string"},"purposes":{"type":"array","items":{"$ref":"#/components/schemas/MessagePurpose"}},"consentPolicy":{"type":"string"},"status":{"type":"string"},"verified":{"type":"boolean"}}},"Client":{"type":"object","required":["id","displayName","channelProfiles","consents"],"properties":{"id":{"type":"string","example":"2150151"},"displayName":{"type":"string"},"locale":{"type":"string"},"timezone":{"type":"string"},"channelProfiles":{"type":"array","items":{"$ref":"#/components/schemas/ChannelProfile"}},"consents":{"type":"array","items":{"type":"object"}}}},"WorkflowNode":{"type":"object","required":["id","key","kind","name","ui","config"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"kind":{"type":"string","enum":["trigger","condition","wait","send_message","create_task","domain_action","end"]},"name":{"type":"string"},"description":{"type":"string"},"ui":{"type":"object","properties":{"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}}}},"config":{"type":"object","additionalProperties":true}}},"WorkflowEdge":{"type":"object","required":["id","sourceNodeId","targetNodeId","sourcePort"],"properties":{"id":{"type":"string"},"sourceNodeId":{"type":"string"},"targetNodeId":{"type":"string"},"sourcePort":{"type":"string","enum":["next","true","false","timeout","sent","failed","created","success"]},"label":{"type":"string"}}},"WorkflowGraph":{"type":"object","required":["nodes","edges"],"properties":{"nodes":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowNode"}},"edges":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowEdge"}}}},"WorkflowNodeInput":{"type":"object","required":["kind","name","ui","config"],"properties":{"id":{"type":"string"},"key":{"type":"string"},"kind":{"type":"string","enum":["trigger","condition","wait","send_message","create_task","domain_action","end"]},"name":{"type":"string"},"description":{"type":"string","default":""},"ui":{"type":"object","required":["position"],"properties":{"position":{"type":"object","required":["x","y"],"properties":{"x":{"type":"number"},"y":{"type":"number"}}}}},"config":{"type":"object","additionalProperties":true}}},"WorkflowEdgeInput":{"type":"object","required":["sourceNodeId","targetNodeId"],"properties":{"id":{"type":"string"},"sourceNodeId":{"type":"string"},"targetNodeId":{"type":"string"},"sourcePort":{"type":"string","enum":["next","true","false","timeout","sent","failed","created","success"],"default":"next"},"label":{"type":"string"}}},"CreateWorkflowRequest":{"type":"object","required":["templateId"],"properties":{"templateId":{"type":"string"},"clientId":{"type":"string","example":"2150151"},"name":{"type":"string"}}},"PatchWorkflowRequest":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"status":{"$ref":"#/components/schemas/WorkflowStatus"},"expectedRevision":{"type":"integer","minimum":1},"graph":{"$ref":"#/components/schemas/WorkflowGraph"}}},"AddNodeRequest":{"type":"object","required":["node"],"properties":{"node":{"$ref":"#/components/schemas/WorkflowNodeInput"},"afterNodeId":{"type":"string"},"sourcePort":{"type":"string","enum":["next","true","false","timeout","sent","failed","created","success"]},"expectedRevision":{"type":"integer","minimum":1}}},"UpdateNodeRequest":{"type":"object","required":["patch"],"properties":{"patch":{"type":"object","additionalProperties":true},"expectedRevision":{"type":"integer","minimum":1}}},"RemoveNodeRequest":{"type":"object","properties":{"strategy":{"type":"string","enum":["bridge","detach"],"default":"bridge"},"expectedRevision":{"type":"integer","minimum":1}}},"ConnectNodesRequest":{"type":"object","required":["edge"],"properties":{"edge":{"$ref":"#/components/schemas/WorkflowEdgeInput"},"expectedRevision":{"type":"integer","minimum":1}}},"DisconnectNodesRequest":{"type":"object","required":["edgeId"],"properties":{"edgeId":{"type":"string"},"expectedRevision":{"type":"integer","minimum":1}}},"ValidateWorkflowRequest":{"type":"object","properties":{"graph":{"$ref":"#/components/schemas/WorkflowGraph"}}},"SimulateWorkflowRequest":{"type":"object","properties":{"clientId":{"type":"string","default":"2150151"},"event":{"type":"object","additionalProperties":true},"idempotencyKey":{"type":"string","maxLength":200}}},"HookEventRequest":{"type":"object","additionalProperties":true,"description":"Acceptă fie { clientId, event }, fie payload-ul evenimentului direct."},"TestMessageRequest":{"type":"object","required":["messageDefinitionId"],"properties":{"clientId":{"type":"string","default":"2150151"},"messageDefinitionId":{"type":"string"},"variables":{"type":"object","additionalProperties":true}}},"DispatchMeta":{"type":"object","additionalProperties":false,"properties":{"requestId":{"type":"string","maxLength":200},"idempotencyKey":{"type":"string","maxLength":200},"source":{"type":"string","enum":["api","mcp","ui","runtime","system"]}}},"DispatchOperation":{"type":"object","additionalProperties":false,"required":["base"],"properties":{"base":{"type":"string","pattern":"^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_]*)+$","example":"workflow.simulate"},"input":{"description":"Input specific bazei; vezi catalog.capabilities.get sau admin.dispatch.bases."},"meta":{"$ref":"#/components/schemas/DispatchMeta"}}},"DispatchRequest":{"oneOf":[{"$ref":"#/components/schemas/DispatchOperation"},{"type":"object","additionalProperties":false,"required":["operations"],"properties":{"operations":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/DispatchOperation"}},"atomic":{"type":"boolean","default":false}}}]},"DispatchOperationResult":{"type":"object","required":["base","status","meta"],"properties":{"base":{"type":"string"},"status":{"type":"string","enum":["ok","error","skipped","replay","rolled_back"]},"data":{},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"httpStatus":{"type":"integer"},"details":{}}},"meta":{"type":"object","required":["durationMs","sequence"],"properties":{"requestId":{"type":"string"},"idempotencyKey":{"type":"string"},"durationMs":{"type":"number","minimum":0},"replay":{"type":"boolean"},"sequence":{"type":"integer","minimum":0}}}}},"DispatchBatchResponse":{"type":"object","required":["operations","summary"],"properties":{"operations":{"type":"array","items":{"$ref":"#/components/schemas/DispatchOperationResult"}},"summary":{"type":"object","required":["total","ok","error","replay","skipped","rolledBack","atomic","batchId"],"properties":{"total":{"type":"integer"},"ok":{"type":"integer"},"error":{"type":"integer"},"replay":{"type":"integer"},"skipped":{"type":"integer"},"rolledBack":{"type":"integer"},"atomic":{"type":"boolean"},"batchId":{"type":"string"}}}}},"WorkflowManifest":{"type":"object","required":["schemaVersion","id","key","version","revision","status","name","category","nodes","edges","hooks","messageDefinitions"],"properties":{"schemaVersion":{"type":"string","const":"1.0"},"id":{"type":"string"},"key":{"type":"string"},"version":{"type":"integer"},"revision":{"type":"integer"},"status":{"type":"string","enum":["template","draft","active","paused","archived"]},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"sourceTemplateId":{"type":"string"},"locale":{"type":"string"},"nodes":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowNode"}},"edges":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowEdge"}},"hooks":{"type":"array","items":{"type":"object","additionalProperties":true}},"messageDefinitions":{"type":"array","items":{"type":"object","additionalProperties":true}},"metadata":{"type":"object","additionalProperties":true}}},"Workflow":{"type":"object","required":["id","name","status","revision","manifest"],"properties":{"id":{"type":"string"},"workspaceId":{"type":"string"},"blueprintId":{"type":["string","null"]},"name":{"type":"string"},"description":{"type":"string"},"category":{"type":"string"},"status":{"$ref":"#/components/schemas/WorkflowStatus"},"revision":{"type":"integer"},"hook":{"type":["object","null"]},"manifest":{"$ref":"#/components/schemas/WorkflowManifest"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"TemplateSummary":{"type":"object","required":["id","name","category","channels","purposes"],"properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"channels":{"type":"array","items":{"$ref":"#/components/schemas/DeliveryChannel"}},"purposes":{"type":"array","items":{"$ref":"#/components/schemas/MessagePurpose"}}}},"TemplateDetail":{"type":"object","required":["manifest","messageDefinitions","validation"],"properties":{"manifest":{"$ref":"#/components/schemas/WorkflowManifest"},"messageDefinitions":{"type":"array","items":{"type":"object","additionalProperties":true}},"validation":{"$ref":"#/components/schemas/ValidationReport"}}},"ValidationReport":{"type":"object","required":["valid","errors","warnings"],"properties":{"valid":{"type":"boolean"},"errors":{"type":"array","items":{"type":"object"}},"warnings":{"type":"array","items":{"type":"object"}}}},"WorkflowRun":{"type":"object","required":["id","workflowId","clientId","status","trace"],"properties":{"id":{"type":"string"},"workflowId":{"type":"string"},"clientId":{"type":"string"},"status":{"type":"string"},"trace":{"type":"array","items":{"type":"object"}},"deliveries":{"type":"array","items":{"type":"object"}},"tasks":{"type":"array","items":{"type":"object"}}}},"Capabilities":{"type":"object","properties":{"schemaVersion":{"type":"string"},"channels":{"type":"object"},"nodeKinds":{"type":"array","items":{"type":"object"}},"graphOperations":{"type":"array","items":{"type":"string"}}}}}}}