{"components":{"schemas":{"Annotation":{"properties":{"actorId":{"format":"uuid","type":"string"},"actorType":{"type":"string"},"body":{"type":"string"},"category":{"$ref":"#/components/schemas/AnnotationCategory"},"createdAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"parentId":{"format":"uuid","type":"string"},"severity":{"type":"string"},"threadId":{"format":"uuid","type":"string"},"widgetId":{"format":"uuid","type":"string"}},"type":"object"},"AnnotationCategory":{"enum":["accessibility","documentation_gap","friction","governance_concern","missing_capability","policy_conflict","product_opportunity","trust_deficit","workflow_bottleneck","ops-backup-gap","ops-drift","ops-migration-risk","ops-observability-gap","ops-readiness-blocker","ops-recovery-gap","ops-routing-gap","ops-secret-gap","ops-security-gap","ops-service-catalog-gap"],"type":"string"},"ApiConsumer":{"properties":{"createdAt":{"format":"date-time","type":"string"},"description":{"type":"string"},"hubCapabilityManifestId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"isActive":{"type":"boolean"},"name":{"type":"string"},"quotaPerDay":{"type":"integer"},"quotaResetsAt":{"format":"date-time","type":"string"},"rateLimitPerMinute":{"type":"integer"},"updatedAt":{"format":"date-time","type":"string"}},"type":"object"},"ApiKey":{"properties":{"apiConsumerId":{"format":"uuid","type":"string"},"createdAt":{"format":"date-time","type":"string"},"expiresAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"keyPrefix":{"type":"string"},"lastUsedAt":{"format":"date-time","type":"string"},"revokedAt":{"format":"date-time","type":"string"},"scopes":{"type":"string"},"tokenType":{"type":"string"}},"type":"object"},"ApiKeyCreatedResponse":{"properties":{"apiKey":{"$ref":"#/components/schemas/ApiKey"},"displayOnce":{"type":"boolean"},"fullKey":{"description":"Static API key secret. Returned only in this creation response; it is stored hashed and cannot be recovered later.","type":"string"}},"type":"object"},"CreateAnnotationRequest":{"properties":{"body":{"type":"string"},"category":{"$ref":"#/components/schemas/AnnotationCategory"},"widgetId":{"format":"uuid","type":"string"}},"required":["widgetId","category","body"],"type":"object"},"CreateApiConsumerRequest":{"properties":{"description":{"type":"string"},"hubCapabilityManifestId":{"format":"uuid","type":"string"},"name":{"type":"string"},"quotaPerDay":{"default":10000,"minimum":1,"type":"integer"},"rateLimitPerMinute":{"default":60,"minimum":1,"type":"integer"}},"required":["name"],"type":"object"},"CreateApiKeyRequest":{"properties":{"scopes":{"type":"string"}},"type":"object"},"CreateHubCapabilityManifestRequest":{"properties":{"capabilityDescription":{"type":"string"},"contact":{"type":"string"},"declaredAnnotationCategories":{"items":{"$ref":"#/components/schemas/AnnotationCategory"},"type":"array"},"declaredEventTypes":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array"},"declaredPolicyScopes":{"items":{"$ref":"#/components/schemas/PolicyScope"},"type":"array"},"declaredWidgetTypes":{"items":{"$ref":"#/components/schemas/WidgetType"},"type":"array"},"hubId":{"format":"uuid","type":"string"},"manifestVersion":{"type":"string"}},"required":["hubId"],"type":"object"},"CreateHubRequest":{"properties":{"domain":{"type":"string"},"hubFamily":{"enum":["vsm"],"type":"string"},"hubKind":{"enum":["domain","shared"],"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"vsmFunction":{"type":"string"},"vsmSystem":{"enum":["1","2","3","3*","4","5","environment"],"type":"string"}},"required":["slug","name","domain"],"type":"object"},"CreateInteractionEventRequest":{"properties":{"eventType":{"$ref":"#/components/schemas/EventType"},"metadata":{"additionalProperties":true,"type":"object"},"viewContext":{"type":"string"},"widgetId":{"format":"uuid","type":"string"}},"required":["widgetId","eventType"],"type":"object"},"CreateWidgetRequest":{"properties":{"adapterSpecId":{"format":"uuid","type":"string"},"capabilityRef":{"type":"string"},"hubId":{"format":"uuid","type":"string"},"name":{"type":"string"},"policyScope":{"$ref":"#/components/schemas/PolicyScope"},"status":{"enum":["active","deprecated","draft"],"type":"string"},"viewContext":{"type":"string"},"widgetType":{"$ref":"#/components/schemas/WidgetType"}},"required":["hubId","name","widgetType"],"type":"object"},"DecisionRecord":{"properties":{"candidateId":{"format":"uuid","type":"string"},"createdAt":{"format":"date-time","type":"string"},"decidedAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"notes":{"type":"string"},"outcome":{"type":"string"},"rationale":{"type":"string"},"requirementId":{"format":"uuid","type":"string"},"title":{"type":"string"}},"type":"object"},"DeploymentRecord":{"properties":{"createdAt":{"format":"date-time","type":"string"},"decisionId":{"format":"uuid","type":"string"},"deployedAt":{"format":"date-time","type":"string"},"id":{"format":"uuid","type":"string"},"notes":{"type":"string"},"versionRef":{"type":"string"}},"type":"object"},"EventType":{"enum":["abandoned","accepted_recommendation","blocked_by_policy","clicked","commented","escalated","failed","flagged_confusing","flagged_helpful","focused","rejected_recommendation","retracted","retried","submitted","viewed","ops-backup-verified","ops-drift-detected","ops-endpoint-verified","ops-health-checked","ops-inventory-registered","ops-inventory-updated","ops-migration-gate-failed","ops-migration-gate-passed","ops-readiness-gate-updated","ops-release-observed","ops-restore-tested","ops-risk-accepted","ops-risk-raised","ops-runbook-executed","ops-service-discovered"],"type":"string"},"Hub":{"properties":{"createdAt":{"format":"date-time","type":"string"},"domain":{"type":"string"},"hubFamily":{"enum":["vsm"],"type":"string"},"hubKind":{"enum":["domain","shared"],"type":"string"},"id":{"format":"uuid","type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"vsmFunction":{"type":"string"},"vsmSystem":{"enum":["1","2","3","3*","4","5","environment"],"type":"string"}},"type":"object"},"HubCapabilityManifest":{"properties":{"activatedAt":{"format":"date-time","type":"string"},"capabilityDescription":{"type":"string"},"contact":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"declaredAnnotationCategories":{"items":{"$ref":"#/components/schemas/AnnotationCategory"},"type":"array"},"declaredEventTypes":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array"},"declaredPolicyScopes":{"items":{"$ref":"#/components/schemas/PolicyScope"},"type":"array"},"declaredWidgetTypes":{"items":{"$ref":"#/components/schemas/WidgetType"},"type":"array"},"hubId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"manifestVersion":{"type":"string"},"status":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"type":"object"},"HubManifestSummary":{"properties":{"activatedAt":{"format":"date-time","type":"string"},"declaredAnnotationCategories":{"items":{"$ref":"#/components/schemas/AnnotationCategory"},"type":"array"},"declaredEventTypes":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array"},"declaredPolicyScopes":{"items":{"$ref":"#/components/schemas/PolicyScope"},"type":"array"},"declaredWidgetTypes":{"items":{"$ref":"#/components/schemas/WidgetType"},"type":"array"},"id":{"format":"uuid","type":"string"},"manifestVersion":{"type":"string"},"status":{"type":"string"}},"type":"object"},"HubRegistryEntry":{"properties":{"domain":{"type":"string"},"gaafStatus":{"enum":["compliant","draft_only","no_manifest"],"type":"string"},"healthAt":{"format":"date-time","type":"string"},"healthScore":{"type":"integer"},"hubFamily":{"type":"string"},"hubKind":{"type":"string"},"id":{"format":"uuid","type":"string"},"manifest":{"$ref":"#/components/schemas/HubManifestSummary"},"name":{"type":"string"},"slug":{"type":"string"},"vsmFunction":{"type":"string"},"vsmSystem":{"type":"string"}},"type":"object"},"InstitutionalKnowledgeEntry":{"properties":{"createdAt":{"format":"date-time","type":"string"},"decisionRecordId":{"format":"uuid","type":"string"},"hubId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"summary":{"type":"string"},"tags":{"type":"array"},"updatedAt":{"format":"date-time","type":"string"}},"type":"object"},"InteractionEvent":{"properties":{"actorId":{"format":"uuid","type":"string"},"actorType":{"type":"string"},"eventType":{"$ref":"#/components/schemas/EventType"},"id":{"format":"uuid","type":"string"},"metadata":{"type":"object"},"occurredAt":{"format":"date-time","type":"string"},"viewContextRef":{"type":"string"},"widgetId":{"format":"uuid","type":"string"}},"type":"object"},"OutcomeCorrelation":{"properties":{"annotationCategory":{"type":"string"},"computedAt":{"format":"date-time","type":"string"},"correlationScore":{"type":"number"},"correlationType":{"type":"string"},"hubId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"sampleCount":{"type":"integer"}},"type":"object"},"OutcomeSignal":{"properties":{"deploymentId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"observedAt":{"format":"date-time","type":"string"},"signalType":{"type":"string"},"value":{"type":"number"},"widgetId":{"format":"uuid","type":"string"}},"type":"object"},"PaginationMeta":{"properties":{"page":{"type":"integer"},"per_page":{"type":"integer"},"total":{"type":"integer"}},"type":"object"},"PatternAdoptionResponse":{"properties":{"adopted":{"type":"boolean"},"adoptionId":{"format":"uuid","type":"string"}},"type":"object"},"PatternPerformanceRecord":{"properties":{"adoptionCount":{"type":"integer"},"calibratedAt":{"format":"date-time","type":"string"},"hubId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"meanOutcomeValue":{"type":"number"},"outcomeRank":{"type":"integer"},"positiveOutcomeCount":{"type":"integer"},"positiveOutcomeRate":{"type":"number"},"totalOutcomeCount":{"type":"integer"},"widgetPatternId":{"format":"uuid","type":"string"}},"type":"object"},"PolicyScope":{"enum":["external","internal","org-wide","regulatory","security","ops-backup-retention","ops-local","ops-production","ops-registry","ops-secrets","ops-threephoenix","ops-transitional-prod"],"type":"string"},"RequirementCandidate":{"properties":{"category":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"description":{"type":"string"},"id":{"format":"uuid","type":"string"},"sourceWidgetId":{"format":"uuid","type":"string"},"status":{"type":"string"},"title":{"type":"string"}},"type":"object"},"UpdateHubCapabilityManifestRequest":{"properties":{"capabilityDescription":{"type":"string"},"contact":{"type":"string"},"declaredAnnotationCategories":{"items":{"$ref":"#/components/schemas/AnnotationCategory"},"type":"array"},"declaredEventTypes":{"items":{"$ref":"#/components/schemas/EventType"},"type":"array"},"declaredPolicyScopes":{"items":{"$ref":"#/components/schemas/PolicyScope"},"type":"array"},"declaredWidgetTypes":{"items":{"$ref":"#/components/schemas/WidgetType"},"type":"array"},"manifestVersion":{"type":"string"}},"type":"object"},"Widget":{"properties":{"capabilityRef":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"hubId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"name":{"type":"string"},"policyScope":{"type":"string"},"status":{"type":"string"},"version":{"type":"integer"},"viewContext":{"type":"string"},"widgetType":{"$ref":"#/components/schemas/WidgetType"}},"type":"object"},"WidgetPattern":{"properties":{"createdAt":{"format":"date-time","type":"string"},"description":{"type":"string"},"hubId":{"format":"uuid","type":"string"},"id":{"format":"uuid","type":"string"},"isCrossHub":{"type":"boolean"},"isPublished":{"type":"boolean"},"name":{"type":"string"},"updatedAt":{"format":"date-time","type":"string"},"widgetType":{"$ref":"#/components/schemas/WidgetType"}},"type":"object"},"WidgetPatternDetail":{"properties":{"adopterCount":{"type":"integer"},"pattern":{"$ref":"#/components/schemas/WidgetPattern"},"versions":{"items":{"$ref":"#/components/schemas/WidgetPatternVersion"},"type":"array"}},"type":"object"},"WidgetPatternVersion":{"properties":{"changelog":{"type":"string"},"definition":{"additionalProperties":true,"type":"object"},"id":{"format":"uuid","type":"string"},"publishedAt":{"format":"date-time","type":"string"},"versionNumber":{"type":"integer"}},"type":"object"},"WidgetType":{"enum":["action","chart","chat","diff","form","recommendation","panel","table","workflow-step","ops-backup-set","ops-cluster","ops-endpoint","ops-environment","ops-host","ops-incident","ops-migration-wave","ops-readiness-gate","ops-release","ops-risk","ops-runbook","ops-secret-set","ops-service","ops-service-catalog"],"type":"string"}},"securitySchemes":{"BearerAuth":{"description":"API key or OAuth token obtained via POST /api/v2/token","scheme":"bearer","type":"http"}}},"info":{"description":"IHF external API v2. For the human-readable contract see /contracts/functional/interaction-reporting-v1.md","title":"Interaction Hub Framework API","version":"2.0"},"openapi":"3.1.0","paths":{"/annotation-categories":{"get":{"responses":{"200":{"description":"OK"}},"security":[],"summary":"List registered AnnotationCategoryRegistry values"}},"/annotations":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}},{"in":"query","name":"widgetId","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"category","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Annotation"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List Annotation"},"post":{"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAnnotationRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Annotation"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create Annotation"}},"/api-consumers":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/ApiConsumer"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List ApiConsumer"},"post":{"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiConsumerRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConsumer"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create ApiConsumer"}},"/api-consumers/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiConsumer"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get ApiConsumer"}},"/api-consumers/{id}/api-keys":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}},"required":false},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiKeyCreatedResponse"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create ApiKey"}},"/decision-records":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DecisionRecord"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List DecisionRecord"}},"/decision-records/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecisionRecord"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get DecisionRecord"}},"/deployment-records":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/DeploymentRecord"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List DeploymentRecord"}},"/deployment-records/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeploymentRecord"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get DeploymentRecord"}},"/event-types":{"get":{"responses":{"200":{"description":"OK"}},"security":[],"summary":"List registered EventTypeRegistry values"}},"/hub-capability-manifests":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}},{"in":"query","name":"hubId","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"status","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/HubCapabilityManifest"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List HubCapabilityManifest"},"post":{"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateHubCapabilityManifestRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubCapabilityManifest"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create HubCapabilityManifest"}},"/hub-capability-manifests/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubCapabilityManifest"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get HubCapabilityManifest"},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateHubCapabilityManifestRequest"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubCapabilityManifest"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Update HubCapabilityManifest"}},"/hub-capability-manifests/{id}/activate":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubCapabilityManifest"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Activate HubCapabilityManifest"}},"/hub-registry":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/HubRegistryEntry"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List HubRegistryEntry"}},"/hub-registry/{hubId}":{"get":{"parameters":[{"in":"path","name":"hubId","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HubRegistryEntry"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get HubRegistryEntry"}},"/hubs":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Hub"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"}},"security":[],"summary":"List Hub"},"post":{"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateHubRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hub"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create Hub"}},"/hubs/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Hub"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get Hub"}},"/interaction-events":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}},{"in":"query","name":"widgetId","schema":{"format":"uuid","type":"string"}},{"in":"query","name":"eventType","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/InteractionEvent"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List InteractionEvent"},"post":{"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInteractionEventRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteractionEvent"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create InteractionEvent"}},"/outcome-signals":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/OutcomeSignal"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List OutcomeSignal"}},"/outcome-signals/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutcomeSignal"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get OutcomeSignal"}},"/policy-scopes":{"get":{"responses":{"200":{"description":"OK"}},"security":[],"summary":"List registered PolicyScopeRegistry values"}},"/requirement-candidates":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/RequirementCandidate"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List RequirementCandidate"}},"/requirement-candidates/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequirementCandidate"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get RequirementCandidate"}},"/token":{"post":{"requestBody":{"content":{"application/x-www-form-urlencoded":{"schema":{"properties":{"client_id":{"format":"uuid","type":"string"},"client_secret":{"type":"string"},"grant_type":{"enum":["client_credentials"],"type":"string"},"scope":{"type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Access token issued"},"400":{"description":"Invalid request or credentials"}},"summary":"Obtain OAuth access token (client credentials)"}},"/widget-patterns":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/WidgetPattern"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List WidgetPattern"}},"/widget-patterns/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WidgetPatternDetail"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get WidgetPatternDetail"}},"/widget-patterns/{id}/adopt":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatternAdoptionResponse"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Adopt WidgetPattern"}},"/widget-types":{"get":{"responses":{"200":{"description":"OK"}},"security":[],"summary":"List registered WidgetTypeRegistry values"}},"/widgets":{"get":{"parameters":[{"in":"query","name":"page","schema":{"type":"integer"}},{"in":"query","name":"per_page","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"data":{"items":{"$ref":"#/components/schemas/Widget"},"type":"array"},"meta":{"$ref":"#/components/schemas/PaginationMeta"}},"type":"object"}}},"description":"OK"},"401":{"description":"Unauthorized"}},"security":[{"BearerAuth":[]}],"summary":"List Widget"},"post":{"parameters":[],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWidgetRequest"}}},"required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Widget"}}},"description":"OK"},"400":{"description":"Invalid request"},"401":{"description":"Unauthorized"},"422":{"description":"Validation error"}},"security":[{"BearerAuth":[]}],"summary":"Create Widget"}},"/widgets/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"format":"uuid","type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Widget"}}},"description":"OK"},"401":{"description":"Unauthorized"},"404":{"description":"Not found"}},"security":[{"BearerAuth":[]}],"summary":"Get Widget"}}},"security":[{"BearerAuth":[]}],"servers":[{"url":"/api/v2"}],"x-ihf-contract":"/contracts/functional/interaction-reporting-v1.md"}