{"openapi":"3.1.0","info":{"title":"PureStats Setup API","version":"1.0.0"},"paths":{"/api/v1/management/actions/sites.list":{"get":{"operationId":"sites.list","tags":["sites"],"summary":"Sites list","description":"Requires sites:read. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"query","name":"page","required":false,"schema":{"type":["integer","null"],"minimum":1,"maximum":100000}},{"in":"query","name":"per_page","required":false,"schema":{"type":["integer","null"],"minimum":1,"maximum":100}}],"x-required-scopes":["sites:read"],"x-site-role":"viewer","x-risk":"none","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}}}},"/api/v1/management/actions/sites.create":{"post":{"operationId":"sites.create","tags":["sites"],"summary":"Sites create","description":"Requires sites:create. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":200}}],"x-required-scopes":["sites:create"],"x-site-role":"manager","x-risk":"write","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string","maxLength":269},"name":{"type":["string","null"],"maxLength":255},"timezone":{"$ref":"#/components/schemas/AgentInputeb9b25e9028135bc7873"},"public":{"type":"boolean"}},"additionalProperties":false,"required":["domain","timezone","public"]}}}}}},"/api/v1/management/actions/sites.installation":{"get":{"operationId":"sites.installation","tags":["sites"],"summary":"Sites installation","description":"Requires sites:read. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"query","name":"framework","required":false,"schema":{"type":["string","null"],"enum":["html","laravel","react","nextjs","vue","wordpress","shopify","gtm",null]}},{"in":"query","name":"site_id","required":true,"schema":{"type":"integer","minimum":1}}],"x-required-scopes":["sites:read"],"x-site-role":"manager","x-risk":"none","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}}}},"/api/v1/management/actions/sites.installation.tests.start":{"post":{"operationId":"sites.installation.tests.start","tags":["sites"],"summary":"Sites installation tests start","description":"Requires sites:write. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":200}}],"x-required-scopes":["sites:write"],"x-site-role":"manager","x-risk":"write","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"site_id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["site_id"]}}}}}},"/api/v1/management/actions/sites.installation.tests.status":{"get":{"operationId":"sites.installation.tests.status","tags":["sites"],"summary":"Sites installation tests status","description":"Requires sites:read. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"query","name":"id","required":true,"schema":{"type":"string","format":"uuid"}},{"in":"query","name":"site_id","required":true,"schema":{"type":"integer","minimum":1}}],"x-required-scopes":["sites:read"],"x-site-role":"manager","x-risk":"none","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}}}},"/api/v1/management/actions/sites.installation.tests.stop":{"post":{"operationId":"sites.installation.tests.stop","tags":["sites"],"summary":"Sites installation tests stop","description":"Requires sites:write. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":200}}],"x-required-scopes":["sites:write"],"x-site-role":"manager","x-risk":"write","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"site_id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["id","site_id"]}}}}}},"/api/v1/management/actions/sites.verify":{"post":{"operationId":"sites.verify","tags":["sites"],"summary":"Sites verify","description":"Requires sites:write. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":200}}],"x-required-scopes":["sites:write"],"x-site-role":"manager","x-risk":"write","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"site_id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["site_id"]}}}}}},"/api/v1/management/actions/sites.proxy.update":{"post":{"operationId":"sites.proxy.update","tags":["sites"],"summary":"Sites proxy update","description":"Requires sites:write. Payload-bound human approval is required.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}},{"in":"header","name":"Idempotency-Key","required":true,"schema":{"type":"string","minLength":8,"maxLength":200}},{"in":"header","name":"X-Agent-Approval-ID","schema":{"type":"string"}}],"x-required-scopes":["sites:write"],"x-site-role":"owner","x-risk":"security","x-interactive":false,"x-human-approval-required":true,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"trusted_proxy_ips":{"type":"array","items":{"type":"string","maxLength":64},"maxItems":100},"require_signature":{"type":"boolean"},"rotate_signing_key":{"type":["boolean","null"]},"site_id":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["trusted_proxy_ips","require_signature","site_id"]}}}}}},"/api/v1/management/actions/account.get":{"get":{"operationId":"account.get","tags":["account"],"summary":"Account get","description":"Requires account:read. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}}],"x-required-scopes":["account:read"],"x-site-role":"viewer","x-risk":"none","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}}}},"/api/v1/management/actions/account.capabilities":{"get":{"operationId":"account.capabilities","tags":["account"],"summary":"Account capabilities","description":"Requires account:read. Current site membership and granted capabilities are checked on every request.","security":[{"bearerAuth":[]}],"parameters":[{"in":"header","name":"X-Request-ID","schema":{"type":"string"}}],"x-required-scopes":["account:read"],"x-site-role":"viewer","x-risk":"none","x-interactive":false,"x-human-approval-required":false,"responses":{"200":{"description":"JSON result with data, operationId, replayed, and request_id."},"401":{"description":"Missing or invalid bearer principal."},"403":{"description":"Scope, site grant, or membership denied."},"404":{"description":"Operation or site-scoped resource not found."},"409":{"description":"approval_required, interactive_required, idempotency_conflict, or operation_in_progress."},"422":{"description":"Invalid input or missing Idempotency-Key."},"429":{"description":"Rate limited.","headers":{"Retry-After":{"schema":{"type":"integer"}}}}}}},"/api/v1/agents/identity/challenges":{"post":{"operationId":"identity.challenge","tags":["identity"],"security":[],"parameters":[{"in":"header","name":"Idempotency-Key","required":true,"description":"Independent client-generated 32-byte random secret; keep private because it authorizes encrypted response replay.","schema":{"type":"string","minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityChallengeRequest"}}}},"responses":{"201":{"description":"Created or replayed confidential result.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityChallengeResponse"}}}},"400":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"403":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"404":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"409":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"413":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"415":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"422":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"429":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}},"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"500":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"503":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}}},"x-cookie-authentication":false,"x-sensitive-response":true}},"/api/v1/agents/identity/registrations":{"post":{"operationId":"identity.register","tags":["identity"],"security":[],"parameters":[{"in":"header","name":"Idempotency-Key","required":true,"description":"Independent client-generated 32-byte random secret; keep private because it authorizes encrypted response replay.","schema":{"type":"string","minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityRegistrationRequest"}}}},"responses":{"201":{"description":"Created or replayed confidential result.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityCredentialResponse"}}}},"400":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"403":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"404":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"409":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"413":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"415":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"422":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"429":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}},"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"500":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"503":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}}},"x-cookie-authentication":false,"x-sensitive-response":true}},"/api/v1/agents/identity/recoveries":{"post":{"operationId":"identity.recover","tags":["identity"],"security":[],"parameters":[{"in":"header","name":"Idempotency-Key","required":true,"description":"Independent client-generated 32-byte random secret; keep private because it authorizes encrypted response replay.","schema":{"type":"string","minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityRecoveryRequest"}}}},"responses":{"201":{"description":"Created or replayed confidential result.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityCredentialResponse"}}}},"400":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"403":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"404":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"409":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"413":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"415":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"422":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"429":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}},"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"500":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"503":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}}},"x-cookie-authentication":false,"x-sensitive-response":true}},"/api/v1/agents/identity/delegations":{"post":{"operationId":"identity.delegation","tags":["identity"],"security":[],"parameters":[{"in":"header","name":"Idempotency-Key","required":true,"description":"Independent client-generated 32-byte random secret; keep private because it authorizes encrypted response replay.","schema":{"type":"string","minLength":64,"maxLength":64,"pattern":"^[a-f0-9]{64}$"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityDelegationRequest"}}}},"responses":{"201":{"description":"Created or replayed confidential result.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityCredentialResponse"}}}},"400":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"403":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"404":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"409":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"413":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"415":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"422":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"429":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}},"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"500":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}},"503":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentIdentityError"}}}}},"x-cookie-authentication":false,"x-sensitive-response":true}},"/oauth/device/code":{"post":{"operationId":"oauth.device","tags":["oauth"],"security":[[],{"agentClientBasic":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthDeviceRequest"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AgentOAuthDeviceRequest"}}}},"responses":{"200":{"description":"Native Passport OAuth response.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthDeviceResponse"}}}},"400":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"401":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"404":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"429":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}},"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"500":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}}},"x-cookie-authentication":false,"x-sensitive-response":true}},"/oauth/token":{"post":{"operationId":"oauth.token","tags":["oauth"],"security":[[],{"agentClientBasic":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthTokenRequest"}},"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/AgentOAuthTokenRequest"}}}},"responses":{"200":{"description":"Native Passport OAuth response.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthTokenResponse"}}}},"400":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"401":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"404":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"429":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}},"Retry-After":{"schema":{"type":"integer","minimum":1}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}},"500":{"description":"Request denied or unavailable.","headers":{"Cache-Control":{"description":"Includes no-store; responses never issue session cookies.","schema":{"type":"string","pattern":"(^|,\\s*)no-store(,|$)"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentOAuthError"}}}}},"x-cookie-authentication":false,"x-sensitive-response":true}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"},"agentClientBasic":{"type":"http","scheme":"basic"}},"schemas":{"AgentInputeb9b25e9028135bc7873":{"type":"string","enum":["Africa/Abidjan","Africa/Accra","Africa/Addis_Ababa","Africa/Algiers","Africa/Asmara","Africa/Bamako","Africa/Bangui","Africa/Banjul","Africa/Bissau","Africa/Blantyre","Africa/Brazzaville","Africa/Bujumbura","Africa/Cairo","Africa/Casablanca","Africa/Ceuta","Africa/Conakry","Africa/Dakar","Africa/Dar_es_Salaam","Africa/Djibouti","Africa/Douala","Africa/El_Aaiun","Africa/Freetown","Africa/Gaborone","Africa/Harare","Africa/Johannesburg","Africa/Juba","Africa/Kampala","Africa/Khartoum","Africa/Kigali","Africa/Kinshasa","Africa/Lagos","Africa/Libreville","Africa/Lome","Africa/Luanda","Africa/Lubumbashi","Africa/Lusaka","Africa/Malabo","Africa/Maputo","Africa/Maseru","Africa/Mbabane","Africa/Mogadishu","Africa/Monrovia","Africa/Nairobi","Africa/Ndjamena","Africa/Niamey","Africa/Nouakchott","Africa/Ouagadougou","Africa/Porto-Novo","Africa/Sao_Tome","Africa/Tripoli","Africa/Tunis","Africa/Windhoek","America/Adak","America/Anchorage","America/Anguilla","America/Antigua","America/Araguaina","America/Argentina/Buenos_Aires","America/Argentina/Catamarca","America/Argentina/Cordoba","America/Argentina/Jujuy","America/Argentina/La_Rioja","America/Argentina/Mendoza","America/Argentina/Rio_Gallegos","America/Argentina/Salta","America/Argentina/San_Juan","America/Argentina/San_Luis","America/Argentina/Tucuman","America/Argentina/Ushuaia","America/Aruba","America/Asuncion","America/Atikokan","America/Bahia","America/Bahia_Banderas","America/Barbados","America/Belem","America/Belize","America/Blanc-Sablon","America/Boa_Vista","America/Bogota","America/Boise","America/Cambridge_Bay","America/Campo_Grande","America/Cancun","America/Caracas","America/Cayenne","America/Cayman","America/Chicago","America/Chihuahua","America/Ciudad_Juarez","America/Costa_Rica","America/Coyhaique","America/Creston","America/Cuiaba","America/Curacao","America/Danmarkshavn","America/Dawson","America/Dawson_Creek","America/Denver","America/Detroit","America/Dominica","America/Edmonton","America/Eirunepe","America/El_Salvador","America/Fort_Nelson","America/Fortaleza","America/Glace_Bay","America/Goose_Bay","America/Grand_Turk","America/Grenada","America/Guadeloupe","America/Guatemala","America/Guayaquil","America/Guyana","America/Halifax","America/Havana","America/Hermosillo","America/Indiana/Indianapolis","America/Indiana/Knox","America/Indiana/Marengo","America/Indiana/Petersburg","America/Indiana/Tell_City","America/Indiana/Vevay","America/Indiana/Vincennes","America/Indiana/Winamac","America/Inuvik","America/Iqaluit","America/Jamaica","America/Juneau","America/Kentucky/Louisville","America/Kentucky/Monticello","America/Kralendijk","America/La_Paz","America/Lima","America/Los_Angeles","America/Lower_Princes","America/Maceio","America/Managua","America/Manaus","America/Marigot","America/Martinique","America/Matamoros","America/Mazatlan","America/Menominee","America/Merida","America/Metlakatla","America/Mexico_City","America/Miquelon","America/Moncton","America/Monterrey","America/Montevideo","America/Montserrat","America/Nassau","America/New_York","America/Nome","America/Noronha","America/North_Dakota/Beulah","America/North_Dakota/Center","America/North_Dakota/New_Salem","America/Nuuk","America/Ojinaga","America/Panama","America/Paramaribo","America/Phoenix","America/Port-au-Prince","America/Port_of_Spain","America/Porto_Velho","America/Puerto_Rico","America/Punta_Arenas","America/Rankin_Inlet","America/Recife","America/Regina","America/Resolute","America/Rio_Branco","America/Santarem","America/Santiago","America/Santo_Domingo","America/Sao_Paulo","America/Scoresbysund","America/Sitka","America/St_Barthelemy","America/St_Johns","America/St_Kitts","America/St_Lucia","America/St_Thomas","America/St_Vincent","America/Swift_Current","America/Tegucigalpa","America/Thule","America/Tijuana","America/Toronto","America/Tortola","America/Vancouver","America/Whitehorse","America/Winnipeg","America/Yakutat","Antarctica/Casey","Antarctica/Davis","Antarctica/DumontDUrville","Antarctica/Macquarie","Antarctica/Mawson","Antarctica/McMurdo","Antarctica/Palmer","Antarctica/Rothera","Antarctica/Syowa","Antarctica/Troll","Antarctica/Vostok","Arctic/Longyearbyen","Asia/Aden","Asia/Almaty","Asia/Amman","Asia/Anadyr","Asia/Aqtau","Asia/Aqtobe","Asia/Ashgabat","Asia/Atyrau","Asia/Baghdad","Asia/Bahrain","Asia/Baku","Asia/Bangkok","Asia/Barnaul","Asia/Beirut","Asia/Bishkek","Asia/Brunei","Asia/Chita","Asia/Colombo","Asia/Damascus","Asia/Dhaka","Asia/Dili","Asia/Dubai","Asia/Dushanbe","Asia/Famagusta","Asia/Gaza","Asia/Hebron","Asia/Ho_Chi_Minh","Asia/Hong_Kong","Asia/Hovd","Asia/Irkutsk","Asia/Jakarta","Asia/Jayapura","Asia/Jerusalem","Asia/Kabul","Asia/Kamchatka","Asia/Karachi","Asia/Kathmandu","Asia/Khandyga","Asia/Kolkata","Asia/Krasnoyarsk","Asia/Kuala_Lumpur","Asia/Kuching","Asia/Kuwait","Asia/Macau","Asia/Magadan","Asia/Makassar","Asia/Manila","Asia/Muscat","Asia/Nicosia","Asia/Novokuznetsk","Asia/Novosibirsk","Asia/Omsk","Asia/Oral","Asia/Phnom_Penh","Asia/Pontianak","Asia/Pyongyang","Asia/Qatar","Asia/Qostanay","Asia/Qyzylorda","Asia/Riyadh","Asia/Sakhalin","Asia/Samarkand","Asia/Seoul","Asia/Shanghai","Asia/Singapore","Asia/Srednekolymsk","Asia/Taipei","Asia/Tashkent","Asia/Tbilisi","Asia/Tehran","Asia/Thimphu","Asia/Tokyo","Asia/Tomsk","Asia/Ulaanbaatar","Asia/Urumqi","Asia/Ust-Nera","Asia/Vientiane","Asia/Vladivostok","Asia/Yakutsk","Asia/Yangon","Asia/Yekaterinburg","Asia/Yerevan","Atlantic/Azores","Atlantic/Bermuda","Atlantic/Canary","Atlantic/Cape_Verde","Atlantic/Faroe","Atlantic/Madeira","Atlantic/Reykjavik","Atlantic/South_Georgia","Atlantic/St_Helena","Atlantic/Stanley","Australia/Adelaide","Australia/Brisbane","Australia/Broken_Hill","Australia/Darwin","Australia/Eucla","Australia/Hobart","Australia/Lindeman","Australia/Lord_Howe","Australia/Melbourne","Australia/Perth","Australia/Sydney","Europe/Amsterdam","Europe/Andorra","Europe/Astrakhan","Europe/Athens","Europe/Belgrade","Europe/Berlin","Europe/Bratislava","Europe/Brussels","Europe/Bucharest","Europe/Budapest","Europe/Busingen","Europe/Chisinau","Europe/Copenhagen","Europe/Dublin","Europe/Gibraltar","Europe/Guernsey","Europe/Helsinki","Europe/Isle_of_Man","Europe/Istanbul","Europe/Jersey","Europe/Kaliningrad","Europe/Kirov","Europe/Kyiv","Europe/Lisbon","Europe/Ljubljana","Europe/London","Europe/Luxembourg","Europe/Madrid","Europe/Malta","Europe/Mariehamn","Europe/Minsk","Europe/Monaco","Europe/Moscow","Europe/Oslo","Europe/Paris","Europe/Podgorica","Europe/Prague","Europe/Riga","Europe/Rome","Europe/Samara","Europe/San_Marino","Europe/Sarajevo","Europe/Saratov","Europe/Simferopol","Europe/Skopje","Europe/Sofia","Europe/Stockholm","Europe/Tallinn","Europe/Tirane","Europe/Ulyanovsk","Europe/Vaduz","Europe/Vatican","Europe/Vienna","Europe/Vilnius","Europe/Volgograd","Europe/Warsaw","Europe/Zagreb","Europe/Zurich","Indian/Antananarivo","Indian/Chagos","Indian/Christmas","Indian/Cocos","Indian/Comoro","Indian/Kerguelen","Indian/Mahe","Indian/Maldives","Indian/Mauritius","Indian/Mayotte","Indian/Reunion","Pacific/Apia","Pacific/Auckland","Pacific/Bougainville","Pacific/Chatham","Pacific/Chuuk","Pacific/Easter","Pacific/Efate","Pacific/Fakaofo","Pacific/Fiji","Pacific/Funafuti","Pacific/Galapagos","Pacific/Gambier","Pacific/Guadalcanal","Pacific/Guam","Pacific/Honolulu","Pacific/Kanton","Pacific/Kiritimati","Pacific/Kosrae","Pacific/Kwajalein","Pacific/Majuro","Pacific/Marquesas","Pacific/Midway","Pacific/Nauru","Pacific/Niue","Pacific/Norfolk","Pacific/Noumea","Pacific/Pago_Pago","Pacific/Palau","Pacific/Pitcairn","Pacific/Pohnpei","Pacific/Port_Moresby","Pacific/Rarotonga","Pacific/Saipan","Pacific/Tahiti","Pacific/Tarawa","Pacific/Tongatapu","Pacific/Wake","Pacific/Wallis","UTC"]},"AgentIdentityChallengeResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"challenge_id":{"type":"string","format":"uuid"},"domain":{"type":"string"},"method":{"enum":["dns","https"]},"purpose":{"enum":["register","recover"]},"expires_at":{"type":"string","format":"date-time"},"dns_name":{"type":"string"},"https_url":{"type":"string","format":"uri"},"value":{"type":"string"}},"required":["challenge_id","domain","method","purpose","expires_at","dns_name","https_url","value"],"additionalProperties":false},"request_id":{"type":"string"}},"required":["data","request_id"],"additionalProperties":false},"AgentIdentityCredentialResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"credential_id":{"type":"string","format":"uuid"},"client_id":{"type":"string","format":"uuid"},"client_secret":{"type":"string"},"owner_id":{"type":["integer","null"]},"account_type":{"enum":["human","machine"]},"scopes":{"type":"array","items":{"type":"string"}},"requested_scopes":{"type":"array","items":{"type":"string"}},"site_ids":{"type":"array","items":{"type":"integer"}},"grant_type":{"enum":["client_credentials","urn:ietf:params:oauth:grant-type:device_code"]},"token_endpoint":{"type":"string","format":"uri"},"device_authorization_endpoint":{"type":"string","format":"uri"},"resource":{"type":"string","format":"uri"}},"required":["credential_id","client_id","client_secret","owner_id","account_type","scopes","requested_scopes","site_ids","grant_type","token_endpoint","device_authorization_endpoint","resource"],"additionalProperties":false},"request_id":{"type":"string"}},"required":["data","request_id"],"additionalProperties":false},"AgentIdentityError":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"details":{"type":["object","array"],"additionalProperties":true}},"required":["code","details"],"additionalProperties":false},"request_id":{"type":"string"}},"required":["error","request_id"],"additionalProperties":false},"AgentOAuthTokenResponse":{"type":"object","properties":{"token_type":{"type":"string","const":"Bearer"},"expires_in":{"type":"integer","maximum":900},"access_token":{"type":"string"},"refresh_token":{"type":"string"}},"required":["token_type","expires_in","access_token"],"additionalProperties":false},"AgentOAuthDeviceResponse":{"type":"object","properties":{"device_code":{"type":"string"},"user_code":{"type":"string"},"verification_uri":{"type":"string","format":"uri"},"verification_uri_complete":{"type":"string","format":"uri"},"expires_in":{"type":"integer","maximum":600},"interval":{"type":"integer"}},"required":["device_code","user_code","verification_uri","verification_uri_complete","expires_in","interval"],"additionalProperties":false},"AgentOAuthError":{"type":"object","properties":{"error":{"type":"string"},"error_description":{"type":"string"},"hint":{"type":"string"},"message":{"type":"string"}},"required":["error"],"additionalProperties":false},"AgentIdentityChallengeRequest":{"type":"object","properties":{"domain":{"type":"string","maxLength":253},"method":{"type":"string","enum":["dns","https"]},"purpose":{"type":"string","enum":["register","recover"]},"client_id":{"type":["string","null"],"format":"uuid"},"name":{"type":"string","minLength":1,"maxLength":255},"contact_email":{"type":["string","null"],"format":"email","maxLength":255},"recovery_key":{"type":"string","minLength":64,"maxLength":68,"pattern":"^(?:psr_)?[a-f0-9]{64}$","writeOnly":true,"description":"Generate and persist 32 random bytes as 64 lowercase hex characters before starting registration or recovery. Never publish this key."}},"additionalProperties":false,"required":["domain","method","recovery_key"]},"AgentIdentityRegistrationRequest":{"type":"object","properties":{"challenge_id":{"type":"string","format":"uuid"},"scopes":{"type":"array","items":{"type":"string","enum":["analytics:read","sites:read","sites:create","sites:write","sites:delete","settings:read","settings:write","goals:read","goals:write","experiments:read","experiments:write","alerts:read","alerts:write","annotations:read","annotations:write","exports:read","exports:write","reports:read","reports:write","privacy:read","privacy:write","team:read","team:write","integrations:read","integrations:write","imports:read","imports:write","replays:read","replays:write","teams:read","teams:write","dashboards:read","dashboards:write","destinations:read","destinations:write","explorations:write","funnels:read","funnels:write","measurement_keys:read","measurement_keys:write","search_console:read","search_console:write","site_search:read","site_search:write","visitors:read","account:read","account:write","account:security:read","account:security:write","account:interactive","custom_dimensions:read","custom_dimensions:write","replays:settings:read","replays:settings:write","segments:read","segments:write"]},"minItems":1,"maxItems":56},"recovery_key":{"type":"string","minLength":64,"maxLength":68,"pattern":"^(?:psr_)?[a-f0-9]{64}$","writeOnly":true,"description":"Generate and persist 32 random bytes as 64 lowercase hex characters before starting registration or recovery. Never publish this key."}},"additionalProperties":false,"required":["challenge_id","scopes","recovery_key"]},"AgentIdentityRecoveryRequest":{"type":"object","properties":{"challenge_id":{"type":"string","format":"uuid"},"client_id":{"type":["string","null"],"format":"uuid"},"recovery_key":{"type":"string","minLength":64,"maxLength":68,"pattern":"^(?:psr_)?[a-f0-9]{64}$","writeOnly":true,"description":"Existing recovery key; the challenge already binds a different client-generated replacement key."}},"additionalProperties":false,"required":["challenge_id","recovery_key"]},"AgentIdentityDelegationRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"scopes":{"type":"array","items":{"type":"string","enum":["analytics:read","sites:read","sites:create","sites:write","sites:delete","settings:read","settings:write","goals:read","goals:write","experiments:read","experiments:write","alerts:read","alerts:write","annotations:read","annotations:write","exports:read","exports:write","reports:read","reports:write","privacy:read","privacy:write","team:read","team:write","integrations:read","integrations:write","imports:read","imports:write","replays:read","replays:write","teams:read","teams:write","dashboards:read","dashboards:write","destinations:read","destinations:write","explorations:write","funnels:read","funnels:write","measurement_keys:read","measurement_keys:write","search_console:read","search_console:write","site_search:read","site_search:write","visitors:read","account:read","account:write","account:security:read","account:security:write","account:interactive","custom_dimensions:read","custom_dimensions:write","replays:settings:read","replays:settings:write","segments:read","segments:write"]},"minItems":1,"maxItems":56},"resource":{"type":"string","maxLength":2048,"enum":["https://purestats.io/api/v1/management","https://purestats.io/mcp"]}},"additionalProperties":false,"required":["name","scopes"]},"AgentOAuthDeviceRequest":{"type":"object","properties":{"client_id":{"type":"string","format":"uuid","description":"Client UUID, required unless supplied through HTTP Basic client authentication."},"client_secret":{"type":"string","maxLength":4096,"writeOnly":true},"scope":{"type":"string","minLength":1,"maxLength":8192},"resource":{"type":"string","maxLength":2048}},"additionalProperties":true,"required":["scope"]},"AgentOAuthTokenRequest":{"type":"object","properties":{"grant_type":{"type":"string","enum":["client_credentials","urn:ietf:params:oauth:grant-type:device_code","refresh_token"]},"client_id":{"type":"string","format":"uuid","description":"Client UUID, required unless supplied through HTTP Basic client authentication."},"client_secret":{"type":"string","maxLength":4096,"writeOnly":true},"scope":{"type":"string","minLength":1,"maxLength":8192},"resource":{"type":"string","maxLength":2048},"device_code":{"type":"string","maxLength":8192},"refresh_token":{"type":"string","maxLength":8192,"writeOnly":true}},"additionalProperties":true,"required":["grant_type"],"oneOf":[{"properties":{"grant_type":{"const":"client_credentials"}},"required":["grant_type"]},{"properties":{"grant_type":{"const":"urn:ietf:params:oauth:grant-type:device_code"}},"required":["grant_type","device_code"]},{"properties":{"grant_type":{"const":"refresh_token"}},"required":["grant_type","refresh_token"]}]}}},"servers":[{"url":"https://purestats.io"}],"externalDocs":{"description":"PureStats machine API documentation","url":"https://purestats.io/docs/agents/api.md"}}
