{"openapi":"3.0.0","paths":{"/api/v1":{"get":{"operationId":"AppController_getHello","parameters":[],"responses":{"200":{"description":""}},"tags":["App"]}},"/health":{"get":{"operationId":"AppController_health","parameters":[],"responses":{"200":{"description":""}},"tags":["App"]}},"/ready":{"get":{"operationId":"AppController_ready","parameters":[],"responses":{"200":{"description":""}},"tags":["App"]}},"/live":{"get":{"operationId":"AppController_live","parameters":[],"responses":{"200":{"description":""}},"tags":["App"]}},"/api/v1/auth/register":{"post":{"operationId":"AuthController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/verify-email":{"post":{"operationId":"AuthController_verifyEmail","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/login":{"post":{"operationId":"AuthController_login","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginDto"}}}},"responses":{"200":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenDto"}}}},"responses":{"200":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenDto"}}}},"responses":{"200":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/logout-all":{"post":{"operationId":"AuthController_logoutAll","parameters":[],"responses":{"200":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/api-keys":{"post":{"operationId":"AuthController_createApiKey","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyDto"}}}},"responses":{"201":{"description":""}},"tags":["Auth"]},"get":{"operationId":"AuthController_listApiKeys","parameters":[],"responses":{"200":{"description":""}},"tags":["Auth"]}},"/api/v1/auth/api-keys/{id}":{"delete":{"operationId":"AuthController_revokeApiKey","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["Auth"]}},"/api/v1/audit/logs":{"get":{"operationId":"AuditController_exportLogs","parameters":[{"name":"startDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"operatorId","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}},{"name":"offset","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Audit"]}},"/api/v1/agents/register":{"post":{"operationId":"AgentController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterAgentDto"}}}},"responses":{"201":{"description":""}},"tags":["Agent"]}},"/api/v1/agents/{did}":{"get":{"operationId":"AgentController_resolve","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Agent"]},"delete":{"operationId":"AgentController_decommission","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DecommissionDto"}}}},"responses":{"204":{"description":""}},"tags":["Agent"]}},"/api/v1/agents/{did}/constitution":{"put":{"operationId":"AgentController_updateConstitution","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateConstitutionDto"}}}},"responses":{"200":{"description":""}},"tags":["Agent"]}},"/api/v1/agents/{did}/history":{"get":{"operationId":"AgentController_getHistory","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Agent"]}},"/api/v1/agents/{did}/status":{"post":{"operationId":"AgentController_setCredentialStatus","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetCredentialStatusDto"}}}},"responses":{"200":{"description":""}},"tags":["Agent"]}},"/api/v1/credentials/issue":{"post":{"operationId":"CredentialController_issueCredential","parameters":[],"responses":{"201":{"description":""}},"tags":["Credential"]}},"/api/v1/credentials/{id}":{"get":{"operationId":"CredentialController_getCredential","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/agents/{did}/credentials":{"get":{"operationId":"CredentialController_getAgentCredentials","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/credentials/{id}/renew":{"post":{"operationId":"CredentialController_renewCredential","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/credentials/{id}/revoke":{"post":{"operationId":"CredentialController_revokeCredential","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/credentials/status/{statusListId}":{"get":{"operationId":"CredentialController_getStatusList","parameters":[{"name":"statusListId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/verify/quick":{"post":{"operationId":"CredentialController_quickVerify","parameters":[],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/verify/full":{"post":{"operationId":"CredentialController_fullVerify","parameters":[],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/verify/batch":{"post":{"operationId":"CredentialController_batchVerify","parameters":[],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/verify/webhook/register":{"post":{"operationId":"CredentialController_registerWebhook","parameters":[],"responses":{"201":{"description":""}},"tags":["Credential"]}},"/api/v1/verify/webhooks":{"get":{"operationId":"CredentialController_listWebhooks","parameters":[],"responses":{"200":{"description":""}},"tags":["Credential"]}},"/api/v1/verify/webhook/{id}":{"delete":{"operationId":"CredentialController_deleteWebhook","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["Credential"]}},"/api/v1/delegations":{"post":{"operationId":"DelegationController_createDelegation","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDelegationDto"}}}},"responses":{"201":{"description":""}},"tags":["Delegation"]}},"/api/v1/delegations/verify":{"post":{"operationId":"DelegationController_verifyDelegationChain","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDelegationDto"}}}},"responses":{"200":{"description":""}},"tags":["Delegation"]}},"/api/v1/delegations/{delegationId}":{"get":{"operationId":"DelegationController_getDelegation","parameters":[{"name":"delegationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Delegation"]},"delete":{"operationId":"DelegationController_revokeDelegation","parameters":[{"name":"delegationId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Delegation"]}},"/api/v1/agents/{did}/delegations":{"get":{"operationId":"DelegationAgentController_listDelegations","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["DelegationAgent"]}},"/api/v1/agents/{did}/ancestry":{"get":{"operationId":"DelegationAgentController_getDelegationAncestry","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["DelegationAgent"]}},"/api/v1/events/ingest":{"post":{"operationId":"EventsController_ingestBatch","parameters":[],"responses":{"202":{"description":""}},"tags":["Events"]}},"/api/v1/agents/{did}/behavior/baseline":{"get":{"operationId":"BaselineController_getBaseline","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Baseline"]}},"/api/v1/agents/{did}/behavior/anomalies":{"get":{"operationId":"AnomalyController_getAnomalies","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}},{"name":"startDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"minSeverity","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"limit","required":true,"in":"query","schema":{"type":"string"}},{"name":"offset","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Anomaly"]}},"/api/v1/agents/{did}/response/status":{"get":{"operationId":"ResponseController_getResponseStatus","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Response"]}},"/api/v1/agents/{did}/response/remediation":{"post":{"operationId":"ResponseController_processRemediation","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemediationRequestDto"}}}},"responses":{"201":{"description":""}},"tags":["Response"]}},"/api/v1/agents/{did}/behavior/score":{"get":{"operationId":"ResponseController_getHealthScore","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Response"]}},"/api/v1/webhooks/register":{"post":{"operationId":"NotificationsController_registerWebhook","parameters":[],"responses":{"201":{"description":""}},"tags":["Notifications"]}},"/api/v1/webhooks/{operatorId}":{"get":{"operationId":"NotificationsController_listWebhooks","parameters":[{"name":"operatorId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Notifications"]}},"/api/v1/webhooks/{webhookId}":{"delete":{"operationId":"NotificationsController_deleteWebhook","parameters":[{"name":"webhookId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["Notifications"]}},"/api/v1/agents/{did}/notifications/preferences":{"post":{"operationId":"NotificationsController_updatePreferences","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Notifications"]},"get":{"operationId":"NotificationsController_getPreferences","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Notifications"]}},"/api/v1/agents/{did}/attestations":{"post":{"operationId":"NotificationsController_submitAttestation","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Notifications"]},"get":{"operationId":"NotificationsController_getAttestations","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Notifications"]}},"/api/v1/agents/{did}/reputation/onchain":{"get":{"operationId":"BlockchainController_getOnChainScore","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Blockchain"]}},"/api/v1/admin/blockchain/failed-submissions/stats":{"get":{"operationId":"BlockchainController_getFailureStats","parameters":[],"responses":{"200":{"description":""}},"tags":["Blockchain"]}},"/api/v1/admin/blockchain/failed-submissions":{"get":{"operationId":"BlockchainController_getPendingFailures","parameters":[{"name":"limit","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Blockchain"]}},"/api/v1/admin/blockchain/failed-submissions/{id}/retry":{"post":{"operationId":"BlockchainController_retryFailedSubmission","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":""}},"tags":["Blockchain"]}},"/api/v1/dashboard/summary":{"get":{"operationId":"DashboardController_getSummary","parameters":[],"responses":{"200":{"description":""}},"tags":["Dashboard"]}},"/api/v1/dashboard/agents":{"get":{"operationId":"DashboardController_getAgents","parameters":[],"responses":{"200":{"description":""}},"tags":["Dashboard"]}},"/api/v1/agents":{"get":{"operationId":"OperatorAgentsController_listAgents","parameters":[{"name":"search","required":true,"in":"query","schema":{"type":"string"}},{"name":"status","required":true,"in":"query","schema":{"type":"string"}},{"name":"sortBy","required":true,"in":"query","schema":{"type":"string"}},{"name":"sortOrder","required":true,"in":"query","schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["OperatorAgents"]}},"/api/v1/agents/{did}/did-document":{"get":{"operationId":"OperatorAgentsController_getDIDDocument","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["OperatorAgents"]}},"/api/v1/agents/{did}/constitution/history":{"get":{"operationId":"OperatorAgentsController_getConstitutionHistory","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["OperatorAgents"]}},"/api/v1/agents/{did}/delegation-chain":{"get":{"operationId":"OperatorAgentsController_getDelegationChain","parameters":[{"name":"did","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["OperatorAgents"]}},"/api/v1/audit":{"get":{"operationId":"OperatorAuditController_getAuditLog","parameters":[{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}},{"name":"startDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"endDate","required":true,"in":"query","schema":{"type":"string"}},{"name":"eventTypes","required":true,"in":"query","schema":{"type":"string"}},{"name":"agentDid","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["OperatorAudit"]}},"/api/v1/settings/notifications":{"get":{"operationId":"OperatorSettingsController_getNotificationPreferences","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorSettings"]},"put":{"operationId":"OperatorSettingsController_saveNotificationPreferences","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorSettings"]}},"/api/v1/settings/notifications/validate-webhook":{"post":{"operationId":"OperatorSettingsController_validateWebhook","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorSettings"]}},"/api/v1/settings/api-keys":{"get":{"operationId":"OperatorSettingsController_listApiKeys","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorSettings"]},"post":{"operationId":"OperatorSettingsController_createApiKey","parameters":[],"responses":{"201":{"description":""}},"tags":["OperatorSettings"]}},"/api/v1/settings/api-keys/{id}/revoke":{"post":{"operationId":"OperatorSettingsController_revokeApiKey","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"204":{"description":""}},"tags":["OperatorSettings"]}},"/api/v1/billing":{"get":{"operationId":"OperatorBillingController_getBillingInfo","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorBilling"]}},"/api/v1/billing/stripe-portal-session":{"post":{"operationId":"OperatorBillingController_createStripePortalSession","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorBilling"]}},"/api/v1/billing/invoices":{"get":{"operationId":"OperatorBillingController_getInvoices","parameters":[],"responses":{"200":{"description":""}},"tags":["OperatorBilling"]}},"/api/v1/disputes":{"post":{"operationId":"DisputeController_createDispute","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDisputeDto"}}}},"responses":{"201":{"description":""}},"tags":["Dispute"]},"get":{"operationId":"DisputeController_listDisputes","parameters":[],"responses":{"200":{"description":""}},"tags":["Dispute"]}},"/api/v1/disputes/{disputeId}":{"get":{"operationId":"DisputeController_getDispute","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Dispute"]}},"/api/v1/disputes/{disputeId}/evidence":{"post":{"operationId":"EvidenceController_attachEvidence","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AttachEvidenceDto"}}}},"responses":{"201":{"description":""}},"tags":["Evidence"]},"get":{"operationId":"EvidenceController_listEvidence","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Evidence"]}},"/api/v1/disputes/{disputeId}/claim":{"put":{"operationId":"ArbitrationController_claimDispute","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"tags":["Arbitration"]}},"/api/v1/disputes/{disputeId}/request-evidence":{"put":{"operationId":"ArbitrationController_requestEvidence","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestEvidenceDto"}}}},"responses":{"200":{"description":""}},"tags":["Arbitration"]}},"/api/v1/disputes/{disputeId}/resolve":{"put":{"operationId":"ArbitrationController_resolveDispute","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveDisputeDto"}}}},"responses":{"200":{"description":""}},"tags":["Arbitration"]}},"/api/v1/disputes/{disputeId}/appeal":{"post":{"operationId":"AppealController_createAppeal","parameters":[{"name":"disputeId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAppealDto"}}}},"responses":{"201":{"description":""}},"tags":["Appeal"]}},"/api/v1/analytics/disputes":{"get":{"operationId":"AnalyticsController_getMetrics","parameters":[],"responses":{"200":{"description":""}},"tags":["Analytics"]}},"/api/v1/analytics/disputes/resolution-times":{"get":{"operationId":"AnalyticsController_getResolutionTimeStats","parameters":[],"responses":{"200":{"description":""}},"tags":["Analytics"]}},"/api/v1/analytics/disputes/sla-compliance":{"get":{"operationId":"AnalyticsController_getSLACompliance","parameters":[],"responses":{"200":{"description":""}},"tags":["Analytics"]}},"/api/v1/operators/{operatorId}/notification-preferences":{"put":{"operationId":"NotificationController_updatePreferences","parameters":[{"name":"operatorId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateNotificationPreferencesDto"}}}},"responses":{"200":{"description":""}},"tags":["Notification"]}},"/api/v1/operators/{operatorId}/webhooks":{"post":{"operationId":"NotificationController_registerWebhook","parameters":[{"name":"operatorId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterWebhookDto"}}}},"responses":{"201":{"description":""}},"tags":["Notification"]}},"/api/v1/api-keys/register":{"post":{"description":"Creates a new API key with FREE tier by default. The key is returned only once at creation time.","operationId":"ApiKeyController_register","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterApiKeyDto"}}}},"responses":{"201":{"description":"API key created successfully"},"400":{"description":"Invalid registration data"}},"summary":"Register a new API key","tags":["API Keys"]}},"/api/v1/api-keys/{keyId}":{"get":{"description":"Returns metadata for the specified API key.","operationId":"ApiKeyController_getKey","parameters":[{"name":"keyId","required":true,"in":"path","description":"API key identifier","schema":{"example":"key_abc123","type":"string"}}],"responses":{"200":{"description":"API key metadata"},"404":{"description":"API key not found"}},"summary":"Get API key metadata","tags":["API Keys"]},"delete":{"description":"Immediately revokes the API key. All subsequent requests using this key will return 401.","operationId":"ApiKeyController_revoke","parameters":[{"name":"keyId","required":true,"in":"path","description":"API key identifier","schema":{"example":"key_abc123","type":"string"}}],"responses":{"204":{"description":"Key revoked successfully"},"404":{"description":"API key not found"}},"summary":"Revoke API key","tags":["API Keys"]}},"/api/v1/api-keys/{keyId}/usage":{"get":{"description":"Returns request counts, error rates, top queried agents, and daily usage for the specified key.","operationId":"ApiKeyController_getUsage","parameters":[{"name":"keyId","required":true,"in":"path","description":"API key identifier","schema":{"example":"key_abc123","type":"string"}},{"name":"startDate","required":false,"in":"query","description":"Start date (ISO 8601)","schema":{"example":"2024-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date (ISO 8601)","schema":{"example":"2024-01-31","type":"string"}}],"responses":{"200":{"description":"Usage statistics"},"404":{"description":"API key not found"}},"summary":"Get usage statistics","tags":["API Keys"]}},"/api/v1/api-keys/{keyId}/tier":{"put":{"description":"Updates the access tier for an API key. Admin only.","operationId":"ApiKeyController_updateTier","parameters":[{"name":"keyId","required":true,"in":"path","description":"API key identifier","schema":{"example":"key_abc123","type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTierDto"}}}},"responses":{"204":{"description":"Tier updated successfully"},"400":{"description":"Invalid tier value"},"404":{"description":"API key not found"}},"summary":"Update access tier","tags":["API Keys"]}},"/api/v1/v1/reputation/bulk":{"post":{"description":"Query multiple agent reputation scores in a single request. Requires ENTERPRISE tier. Maximum 100 DIDs per request.","operationId":"ReputationController_bulkLookup","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkLookupDto"}}}},"responses":{"200":{"description":"Bulk lookup results with found and not-found arrays"},"400":{"description":"Request exceeds 100 DIDs"},"401":{"description":"Invalid or missing API key"},"403":{"description":"ENTERPRISE tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"api-key":[]}],"summary":"Bulk lookup reputation scores","tags":["Reputation"]}},"/api/v1/v1/reputation/{did}":{"get":{"description":"Returns the overall reputation score, tier, and cache status for an agent.","operationId":"ReputationController_getScore","parameters":[{"name":"did","required":true,"in":"path","description":"Agent DID","schema":{"example":"did:example:agent123","type":"string"}}],"responses":{"200":{"description":"Reputation score response"},"401":{"description":"Invalid or missing API key"},"404":{"description":"Agent DID not found"},"429":{"description":"Rate limit exceeded"}},"security":[{"api-key":[]}],"summary":"Get reputation score","tags":["Reputation"]}},"/api/v1/v1/reputation/{did}/breakdown":{"get":{"description":"Returns component scores (compliance, reliability, behavioral, attestation) and their weights. Requires STANDARD or ENTERPRISE tier.","operationId":"ReputationController_getBreakdown","parameters":[{"name":"did","required":true,"in":"path","description":"Agent DID","schema":{"example":"did:example:agent123","type":"string"}}],"responses":{"200":{"description":"Score breakdown response"},"401":{"description":"Invalid or missing API key"},"403":{"description":"STANDARD or ENTERPRISE tier required"},"404":{"description":"Agent DID not found"},"429":{"description":"Rate limit exceeded"}},"security":[{"api-key":[]}],"summary":"Get score breakdown","tags":["Reputation"]}},"/api/v1/v1/reputation/{did}/history":{"get":{"description":"Returns historical reputation scores with configurable granularity. Requires STANDARD or ENTERPRISE tier. Max range: 365 days.","operationId":"ReputationController_getHistory","parameters":[{"name":"did","required":true,"in":"path","description":"Agent DID","schema":{"example":"did:example:agent123","type":"string"}},{"name":"granularity","required":false,"in":"query","description":"Aggregation granularity","schema":{"example":"DAILY","type":"string","enum":["HOURLY","DAILY","WEEKLY","MONTHLY"]}},{"name":"startDate","required":false,"in":"query","description":"Start date (ISO 8601)","schema":{"example":"2024-01-01T00:00:00Z","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date (ISO 8601)","schema":{"example":"2024-01-31T23:59:59Z","type":"string"}}],"responses":{"200":{"description":"Score history response with data points and trend"},"400":{"description":"Time range exceeds 365 days"},"401":{"description":"Invalid or missing API key"},"403":{"description":"STANDARD or ENTERPRISE tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"api-key":[]}],"summary":"Get score history","tags":["Reputation"]}},"/api/v1/v1/webhooks":{"post":{"description":"Subscribe to score change notifications for specified agents. Requires ENTERPRISE tier. Max 1000 agent DIDs per subscription.","operationId":"WebhookController_createSubscription","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookDto"}}}},"responses":{"201":{"description":"Webhook subscription created"},"400":{"description":"Invalid subscription data or agent limit exceeded"},"401":{"description":"Invalid or missing API key"},"403":{"description":"ENTERPRISE tier required"},"422":{"description":"Webhook URL unreachable"}},"security":[{"api-key":[]}],"summary":"Create webhook subscription","tags":["Webhooks"]},"get":{"description":"Returns all webhook subscriptions for the authenticated API key. Requires ENTERPRISE tier.","operationId":"WebhookController_listSubscriptions","parameters":[],"responses":{"200":{"description":"List of webhook subscriptions"},"401":{"description":"Invalid or missing API key"},"403":{"description":"ENTERPRISE tier required"}},"security":[{"api-key":[]}],"summary":"List webhook subscriptions","tags":["Webhooks"]}},"/api/v1/v1/webhooks/{subscriptionId}":{"delete":{"description":"Removes a webhook subscription. Requires ENTERPRISE tier.","operationId":"WebhookController_deleteSubscription","parameters":[{"name":"subscriptionId","required":true,"in":"path","description":"Webhook subscription identifier","schema":{"example":"sub_xyz789","type":"string"}}],"responses":{"204":{"description":"Subscription deleted"},"401":{"description":"Invalid or missing API key"},"403":{"description":"ENTERPRISE tier required"},"404":{"description":"Subscription not found"}},"security":[{"api-key":[]}],"summary":"Delete webhook subscription","tags":["Webhooks"]}},"/api/v1/analytics/usage":{"get":{"description":"Returns platform-wide usage analytics including active keys, request counts by tier, and top consumers. Requires ENTERPRISE tier.","operationId":"AnalyticsController_getPlatformAnalytics","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date (ISO 8601)","schema":{"example":"2024-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date (ISO 8601)","schema":{"example":"2024-01-31","type":"string"}}],"responses":{"200":{"description":"Platform analytics report"},"401":{"description":"Invalid or missing API key"},"403":{"description":"ENTERPRISE tier required"}},"security":[{"api-key":[]}],"summary":"Get platform analytics","tags":["Analytics"]}},"/api/v1/analytics/popular-agents":{"get":{"description":"Returns the most frequently queried agents across all API keys. Requires ENTERPRISE tier.","operationId":"AnalyticsController_getPopularAgents","parameters":[{"name":"limit","required":false,"in":"query","description":"Number of results to return (default: 10)","schema":{"example":"10","type":"string"}}],"responses":{"200":{"description":"List of popular agents with query counts"},"401":{"description":"Invalid or missing API key"},"403":{"description":"ENTERPRISE tier required"}},"security":[{"api-key":[]}],"summary":"Get popular agents","tags":["Analytics"]}}},"info":{"title":"Cleerd Reputation API","description":"Public API for querying agent reputation scores, breakdowns, history, and managing webhooks","version":"1.0","contact":{}},"tags":[{"name":"Reputation","description":"Agent reputation score lookup, breakdown, history, and bulk queries"},{"name":"API Keys","description":"API key registration, management, and usage statistics"},{"name":"Webhooks","description":"Webhook subscription management for score change notifications"},{"name":"Analytics","description":"Platform-wide usage analytics (ENTERPRISE)"}],"servers":[],"components":{"securitySchemes":{"api-key":{"type":"apiKey","in":"header","name":"X-API-Key","description":"API key for authentication"}},"schemas":{"RegisterDto":{"type":"object","properties":{}},"VerifyEmailDto":{"type":"object","properties":{}},"LoginDto":{"type":"object","properties":{}},"RefreshTokenDto":{"type":"object","properties":{}},"CreateApiKeyDto":{"type":"object","properties":{}},"RegisterAgentDto":{"type":"object","properties":{}},"UpdateConstitutionDto":{"type":"object","properties":{}},"DecommissionDto":{"type":"object","properties":{}},"SetCredentialStatusDto":{"type":"object","properties":{}},"CreateDelegationDto":{"type":"object","properties":{}},"VerifyDelegationDto":{"type":"object","properties":{}},"RemediationRequestDto":{"type":"object","properties":{}},"CreateDisputeDto":{"type":"object","properties":{}},"AttachEvidenceDto":{"type":"object","properties":{}},"RequestEvidenceDto":{"type":"object","properties":{}},"ResolveDisputeDto":{"type":"object","properties":{}},"CreateAppealDto":{"type":"object","properties":{}},"UpdateNotificationPreferencesDto":{"type":"object","properties":{}},"RegisterWebhookDto":{"type":"object","properties":{}},"RegisterApiKeyDto":{"type":"object","properties":{"organizationName":{"type":"string","description":"Name of the organization","example":"Acme Corp"},"contactEmail":{"type":"string","description":"Contact email for account communications","example":"dev@acme.com"},"intendedUse":{"type":"string","description":"How the API will be used","example":"Agent verification for marketplace listings"},"webhookUrl":{"type":"string","description":"Webhook URL for receiving notifications","example":"https://acme.com/webhooks/reputation"}},"required":["organizationName","contactEmail","intendedUse"]},"UpdateTierDto":{"type":"object","properties":{"tier":{"type":"string","description":"New access tier","enum":["FREE","STANDARD","ENTERPRISE"],"example":"STANDARD"}},"required":["tier"]},"BulkLookupDto":{"type":"object","properties":{"dids":{"description":"Array of agent DIDs to look up (max 100)","example":["did:example:agent1","did:example:agent2"],"type":"array","items":{"type":"string"}}},"required":["dids"]},"CreateWebhookDto":{"type":"object","properties":{"url":{"type":"string","description":"Endpoint URL to receive webhook notifications","example":"https://acme.com/webhooks/score-change"},"agentDids":{"description":"Agent DIDs to monitor for score changes (max 1000)","example":["did:example:agent1","did:example:agent2"],"type":"array","items":{"type":"string"}},"threshold":{"type":"number","description":"Minimum score change to trigger notification (default: 10)","example":5,"minimum":1,"maximum":100},"secret":{"type":"string","description":"Secret for HMAC-SHA256 payload signature verification","example":"my-webhook-secret"}},"required":["url","agentDids"]}}}}