{"openapi":"3.1.2","info":{"title":"Poacher API","version":"1.9.0","description":"Public discovery, scoped account reads, and opt-in alert renaming/pausing. Opt-in paid previews and manual checks require a customer-set daily allowance and explicit per-request approval. Actual provider expense is charged at 50% gross margin, including failed work. Manual checks use an active owned alert and can notify its selected connections. Finite monitoring and paused creation require the separate monitoring:manage scope and an enabled deployment feature flag. Read /capabilities before using them. Billing-setting mutations remain unavailable."},"servers":[{"url":"https://app.poacher.io/api/v1"}],"paths":{"/notification-connections":{"get":{"operationId":"listNotificationConnections","summary":"Read up to 200 enabled owned connection IDs, types and names; no credentials.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationConnections"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alert-updates":{"post":{"operationId":"quoteAlertUpdate","summary":"Quote update from a completed, settled, unchanged API preview. Requires enabled finite monitoring. No charge or monitoring starts.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertUpdateResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["alert_id","preview_id","notification_channel_ids"],"additionalProperties":false,"properties":{"alert_id":{"type":"integer","minimum":1,"maximum":2147483647},"preview_id":{"type":"string","format":"uuid"},"notification_channel_ids":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"integer","minimum":1,"maximum":2147483647},"description":"Explicit existing owned connection IDs. [] means no notifications."},"configuration_revision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Recommended: current settings snapshot revision. Rejects changes since that read before saving a quote. Distinct from rename/pause edit_revision."}}}}}}}},"/alert-updates/{id}":{"get":{"operationId":"getAlertUpdate","summary":"Read update status and paused alert ID.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertUpdateResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alert-updates/{id}/approve":{"post":{"operationId":"approveAlertUpdate","summary":"Approve replacement of all sources from the verified preview; preserve history, delivery preferences and existing minimum, revoke old monitoring permissions, and leave the alert paused. No new work or notifications start.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertUpdateResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["request_hash"],"additionalProperties":false}}}}}},"/alert-updates/{id}/cancel":{"post":{"operationId":"cancelAlertUpdate","summary":"Cancel an unapproved update. Does not undo an applied update or stop monitoring.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertUpdateResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/alert-creations":{"post":{"operationId":"quoteAlertCreation","summary":"Quote creation from a completed, settled, unchanged API preview. Requires enabled finite monitoring. No charge or monitoring starts.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCreationResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"preview_id":{"type":"string","format":"uuid"},"notification_channel_ids":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"integer","minimum":1,"maximum":2147483647},"description":"Explicit existing owned connection IDs. [] means no notifications."}},"required":["preview_id","notification_channel_ids"],"additionalProperties":false}}}}}},"/alert-creations/{id}":{"get":{"operationId":"getAlertCreation","summary":"Read creation status and paused alert ID.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCreationResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alert-creations/{id}/approve":{"post":{"operationId":"approveAlertCreation","summary":"Accept the disclosed future minimum and save one paused alert. No monitoring, charge or notifications start.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCreationResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["request_hash"],"additionalProperties":false}}}}}},"/alert-creations/{id}/cancel":{"post":{"operationId":"cancelAlertCreation","summary":"Cancel unapproved creation. Does not delete a created alert or stop monitoring.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCreationResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/monitoring":{"post":{"operationId":"quoteMonitoring","summary":"Quote fixed-duration monitoring for a paused owned alert. Requires enabled finite monitoring; does not start work.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alert_id":{"type":"integer","minimum":1,"maximum":2147483647},"expires_at":{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$","description":"Exact UTC ISO timestamp with milliseconds, within 30 days and no later than key expiry."},"maximum_charge_micros":{"type":"integer","minimum":2,"maximum":1000000000000,"description":"Total ceiling must cover conservative minimum reserve plus one operation."},"maximum_operation_micros":{"type":"integer","minimum":2,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."}},"required":["alert_id","expires_at","maximum_charge_micros","maximum_operation_micros"],"additionalProperties":false}}}}}},"/monitoring/{id}":{"get":{"operationId":"getMonitoring","summary":"Read fixed limits and provider receipt. Original key only; remains available when new monitoring is disabled.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/monitoring/{id}/approve":{"post":{"operationId":"approveMonitoring","summary":"Start recurring paid work and selected notifications within exact accepted limits and fixed expiry. Requires customer authorization and original key.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["request_hash"],"additionalProperties":false}}}}}},"/monitoring/{id}/revoke":{"post":{"operationId":"revokeMonitoring","summary":"Stop further paid steps; in-flight work may finish and incur costs. Available when new monitoring is disabled.","security":[{"bearerAuth":[]}],"x-required-scopes":["monitoring:manage"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitoringResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/previews":{"post":{"operationId":"quotePreview","summary":"Quote a new URL preview or changes to a saved alert under one spending ceiling. Saved-alert input also requires alerts:read and its current revision. No provider work starts. Body limit: 16 KiB.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["criteria","maximum_charge_micros"],"additionalProperties":false,"oneOf":[{"required":["url"],"not":{"required":["sources"]}},{"required":["sources"],"not":{"anyOf":[{"required":["url"]},{"required":["interval_seconds"]},{"required":["schedule"]}]}}],"properties":{"url":{"type":"string","minLength":1,"maxLength":4096},"interval_seconds":{"type":"integer","enum":[60,120,300,900,3600,21600,43200,86400],"default":3600},"schedule":{"anyOf":[{"type":"null"},{"type":"object","properties":{"offsetMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","minLength":1,"maxLength":80}},"required":["offsetMinutes","timeZone"],"additionalProperties":false}],"description":"Phase within the effective check interval, in an IANA time zone. Null keeps checks relative to the last check."},"sources":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","minLength":1,"maxLength":4096},"interval_seconds":{"type":"integer","enum":[60,120,300,900,3600,21600,43200,86400],"default":3600},"schedule":{"anyOf":[{"type":"null"},{"type":"object","properties":{"offsetMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","minLength":1,"maxLength":80}},"required":["offsetMinutes","timeZone"],"additionalProperties":false}],"description":"Phase within the effective check interval, in an IANA time zone. Null keeps checks relative to the last check."}}},"description":"Distinct normalized URLs; each source has its own frequency and schedule. One shared preview ceiling covers all sources."},"criteria":{"type":"string","minLength":1,"maxLength":4000},"name":{"type":"string","minLength":1,"maxLength":100},"review_results":{"type":"boolean","default":true},"maximum_charge_micros":{"type":"integer","minimum":2,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."}}},{"$ref":"#/components/schemas/EditPreviewRequest"}]}}}}}},"/previews/{id}":{"get":{"operationId":"getPreview","summary":"Read a preview, bounded results and charge receipt.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/previews/{id}/approve":{"post":{"operationId":"approvePreview","summary":"Authorize one paid preview within the quoted ceiling and daily allowance. Failed provider work is charged.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["request_hash"],"additionalProperties":false}}}}}},"/previews/{id}/cancel":{"post":{"operationId":"cancelPreview","summary":"Stop subsequent paid steps; already dispatched work may finish and incur costs.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PreviewResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/checks":{"post":{"operationId":"quoteCheck","summary":"Save a spending ceiling for one active owned alert; no provider work or charge.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"alert_id":{"type":"integer","minimum":1,"maximum":2147483647},"maximum_charge_micros":{"type":"integer","minimum":2,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."}},"required":["alert_id","maximum_charge_micros"],"additionalProperties":false}}}}}},"/checks/{id}":{"get":{"operationId":"getCheck","summary":"Read status, result counts and actual-cost receipt; matching results require results:read separately.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/checks/{id}/approve":{"post":{"operationId":"approveCheck","summary":"Authorize one paid fetch and review within the shared ceiling. New matches can notify selected connections.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"required":["request_hash"],"additionalProperties":false}}}}}},"/checks/{id}/cancel":{"post":{"operationId":"cancelCheck","summary":"Stop subsequent manual-check paid steps. Incurring work, saved results and queued notifications remain; ordinary monitoring is unchanged.","security":[{"bearerAuth":[]}],"x-required-scopes":["work:execute"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{},"required":[],"additionalProperties":false}}}}}},"/sources":{"get":{"operationId":"listSources","summary":"Source catalog metadata. Fixture availability does not prove qualified monitoring.","security":[],"parameters":[],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCatalog"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/capabilities":{"get":{"operationId":"getCapabilities","summary":"Implemented interfaces and explicit limits.","security":[],"parameters":[],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Capabilities"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/account":{"get":{"operationId":"readAccount","summary":"Read prepaid balances, monthly cap, timezone and billing environment.","security":[{"bearerAuth":[]}],"x-required-scopes":["account:read"],"parameters":[],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alerts":{"get":{"operationId":"listAlerts","summary":"List owned alerts and saved criteria.","security":[{"bearerAuth":[]}],"x-required-scopes":["alerts:read"],"parameters":[{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Maximum records per page."},{"name":"before","in":"query","schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The next_before cursor from the previous page. Records are ordered by descending ID."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertsPage"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alerts/{id}":{"get":{"operationId":"getAlert","summary":"Read one owned alert.","security":[{"bearerAuth":[]}],"x-required-scopes":["alerts:read"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"editAlert","summary":"Rename and/or pause an owned alert; never starts paid work.","security":[{"bearerAuth":[]}],"x-required-scopes":["alerts:write"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647}},{"name":"If-Match","in":"header","required":true,"schema":{"type":"string","pattern":"^\"[a-f0-9]{64}\"$"},"description":"The quoted edit_revision from GET /alerts/{id}; covers editable name and status."},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{16,100}$"},"description":"A unique key per account/edit, reused only for an identical retry."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertEditResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","minProperties":1,"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":120},"status":{"const":"paused"}}}}}}}},"/alerts/{id}/configuration":{"get":{"operationId":"getAlertConfiguration","summary":"Read a coherent settings snapshot with a revision for full replacement quotes. No paid work or mutations. Runtime recipes and credentials are excluded; this is not a preview request.","security":[{"bearerAuth":[]}],"x-required-scopes":["alerts:read"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647}}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertConfigurationResponse"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/alerts/{id}/results":{"get":{"operationId":"listResults","summary":"List decided match/likely results for one owned alert; does not mark them read.","security":[{"bearerAuth":[]}],"x-required-scopes":["results:read"],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","minimum":1,"maximum":2147483647}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50},"description":"Maximum records per page."},{"name":"before","in":"query","schema":{"type":"integer","minimum":1,"maximum":2147483647},"description":"The next_before cursor from the previous page. Records are ordered by descending ID."}],"responses":{"200":{"description":"Successful response.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResultsPage"}}}},"400":{"description":"Invalid identifier or pagination parameter.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid, expired or revoked bearer key.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Insufficient scope or disallowed origin/host.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown endpoint, or the alert does not belong to this account.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"The request changed, the quote expired or was cancelled, or the idempotency key belongs to a different request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request body exceeds 2 KiB for edits or 16 KiB for paid-work requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"415":{"description":"Use application/json.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"428":{"description":"Supply the current edit revision.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds before retrying."}}},"503":{"description":"Temporarily unavailable; retry with backoff.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"EditPreviewRequest":{"type":"object","properties":{"alert_id":{"type":"integer","minimum":1,"maximum":2147483647},"configuration_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"maximum_charge_micros":{"type":"integer","minimum":2,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"changes":{"type":"object","minProperties":1,"additionalProperties":false,"properties":{"name":{"type":"string","minLength":1,"maxLength":100},"criteria":{"type":"string","minLength":1,"maxLength":4000,"description":"Complete replacement criteria. Omitting preserves the existing structured brief."},"review_results":{"type":"boolean"},"exact_filters":{"type":"object","minProperties":1,"additionalProperties":false,"properties":{"priceMinCents":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"priceMaxCents":{"type":["integer","null"],"minimum":0,"maximum":1000000000000},"mustInclude":{"type":["array","null"],"maxItems":30,"items":{"type":"string","minLength":1,"maxLength":1000}},"mustExclude":{"type":["array","null"],"maxItems":30,"items":{"type":"string","minLength":1,"maxLength":1000}},"locationIncludes":{"type":["array","null"],"maxItems":30,"items":{"type":"string","minLength":1,"maxLength":1000}},"events":{"type":["array","null"],"maxItems":30,"items":{"enum":["appeared","price_drop","changed","reappeared"]}}},"description":"Patch shared exact filters; null removes only that filter. Others are preserved."},"sources":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","required":["id"],"minProperties":2,"additionalProperties":false,"properties":{"id":{"type":"integer","minimum":1,"maximum":2147483647},"url":{"type":"string","minLength":1,"maxLength":4096},"interval_seconds":{"type":"integer","enum":[60,120,300,900,3600,21600,43200,86400],"default":3600},"schedule":{"anyOf":[{"type":"null"},{"type":"object","properties":{"offsetMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","minLength":1,"maxLength":80}},"required":["offsetMinutes","timeZone"],"additionalProperties":false}],"description":"Phase within the effective check interval, in an IANA time zone. Null keeps checks relative to the last check."}}},"description":"Patch existing source IDs. Omitted sources are preserved; this cannot add or remove sources."}}}},"required":["alert_id","configuration_revision","maximum_charge_micros","changes"],"additionalProperties":false},"NotificationConnection":{"type":"object","properties":{"id":{"type":"integer"},"type":{"enum":["email","slack","discord","ntfy","web_push"]},"name":{"type":"string"}},"required":["id","type","name"],"additionalProperties":false},"NotificationConnections":{"type":"object","properties":{"data":{"type":"array","maxItems":200,"items":{"$ref":"#/components/schemas/NotificationConnection"}}},"required":["data"],"additionalProperties":false},"AlertConfiguration":{"type":"object","properties":{"alert_id":{"type":"integer"},"name":{"type":"string"},"status":{"type":"string"},"urgency":{"type":"string"},"configuration_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"result_review":{"type":"boolean"},"exact_filters":{"type":["object","null"],"description":"Saved exact filters; absence of an optional field retains its existing default.","additionalProperties":true},"matching_brief":{"type":["object","null"],"description":"Current structured or legacy matching brief, excluding unknown runtime fields.","additionalProperties":true},"sources":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"integer"},"source_id":{"type":"string"},"source_url":{"type":["string","null"]},"monitoring_url":{"type":["string","null"]},"interval_seconds":{"type":"integer"},"schedule":{"anyOf":[{"type":"null"},{"type":"object","properties":{"offsetMinutes":{"type":"integer","minimum":0,"maximum":1439},"timeZone":{"type":"string","minLength":1,"maxLength":80}},"required":["offsetMinutes","timeZone"],"additionalProperties":false}],"description":"Phase within the effective check interval, in an IANA time zone. Null keeps checks relative to the last check."},"settings":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string"},"label":{"type":"string"},"type":{"type":"string"},"value":{"type":["string","null"]}},"required":["key","label","type","value"],"additionalProperties":false}},"search_hint":{"type":["string","null"]}},"required":["id","source_id","source_url","monitoring_url","interval_seconds","schedule","settings","search_hint"],"additionalProperties":false}},"notifications":{"type":"object","properties":{"preferences":{"type":["object","null"],"additionalProperties":true},"selected_connections":{"type":"array","items":{"type":"object","properties":{"id":{"type":"integer"},"type":{"type":"string"},"name":{"type":"string"},"enabled":{"type":"boolean"}},"required":["id","type","name","enabled"],"additionalProperties":false}},"unavailable_selected_connections":{"type":"integer"},"shared_recipient_settings":{"const":"managed_in_app_and_preserved_by_replacement"}},"required":["preferences","selected_connections","unavailable_selected_connections","shared_recipient_settings"],"additionalProperties":false},"minimum":{"anyOf":[{"type":"null"},{"type":"object","properties":{"monthly_cents":{"type":"integer"},"currency":{"const":"USD"},"timezone":{"type":"string"}},"required":["monthly_cents","currency","timezone"],"additionalProperties":false}]},"monitoring_control":{"enum":["api","app"]},"warnings":{"type":"array","items":{"type":"string"}},"note":{"type":"string"}},"required":["alert_id","name","status","urgency","configuration_revision","result_review","exact_filters","matching_brief","sources","notifications","minimum","monitoring_control","warnings","note"],"additionalProperties":false},"AlertConfigurationResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AlertConfiguration"}},"required":["data"],"additionalProperties":false},"AlertCreation":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"preview_id":{"type":"string","format":"uuid"},"alert_id":{"type":["integer","null"]},"status":{"enum":["awaiting_approval","created_paused","created_alert_deleted","cancelled","expired"]},"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expires_at":{"type":"string","format":"date-time"},"approved_at":{"type":["string","null"],"format":"date-time"},"notification_channel_ids":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"integer"}},"pricing":{"type":"object","properties":{"currency":{"const":"USD"},"monthly_minimum_cents":{"type":"integer"},"estimated_app_monthly_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"timezone":{"type":"string"}},"required":["currency","monthly_minimum_cents","estimated_app_monthly_micros","timezone"],"additionalProperties":false},"starts_monitoring":{"const":false},"creation_charge_micros":{"const":0},"notice":{"type":"string"}},"required":["id","preview_id","alert_id","status","request_hash","expires_at","approved_at","notification_channel_ids","pricing","starts_monitoring","creation_charge_micros","notice"],"additionalProperties":false},"AlertCreationResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AlertCreation"}},"required":["data"],"additionalProperties":false},"AlertUpdate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"alert_id":{"type":"integer"},"preview_id":{"type":"string","format":"uuid"},"preview_review_url":{"type":"string"},"status":{"enum":["awaiting_approval","updated_paused","cancelled","expired"]},"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"expires_at":{"type":"string","format":"date-time"},"approved_at":{"type":["string","null"],"format":"date-time"},"notification_channel_ids":{"type":"array","maxItems":20,"uniqueItems":true,"items":{"type":"integer"}},"pricing":{"type":"object","properties":{"currency":{"const":"USD"},"monthly_minimum_cents":{"type":"integer"},"estimated_app_monthly_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"timezone":{"type":"string"}},"required":["currency","monthly_minimum_cents","estimated_app_monthly_micros","timezone"],"additionalProperties":false},"starts_monitoring":{"const":false},"update_charge_micros":{"const":0},"replaces_all_sources":{"const":true},"keeps_result_history":{"const":true},"notice":{"type":"string"}},"required":["id","alert_id","preview_id","preview_review_url","status","request_hash","expires_at","approved_at","notification_channel_ids","pricing","starts_monitoring","update_charge_micros","replaces_all_sources","keeps_result_history","notice"],"additionalProperties":false},"AlertUpdateResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/AlertUpdate"}},"required":["data"],"additionalProperties":false},"Monitoring":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"alert_id":{"type":"integer"},"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"status":{"enum":["awaiting_approval","approved","revoked","expired","quote_expired"]},"expires_at":{"type":"string","format":"date-time"},"quote_expires_at":{"type":"string","format":"date-time"},"approved_at":{"type":["string","null"],"format":"date-time"},"revoked_at":{"type":["string","null"],"format":"date-time"},"budget":{"type":"object","properties":{"maximumChargeMicros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"maximumOperationMicros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"minimumReserveMicros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"providerUsageHeadroomMicros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"startsAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"minimumPortions":{"type":"array","items":{"type":"object","properties":{"period":{"type":"string"},"startsAt":{"type":"string","format":"date-time"},"endsAt":{"type":"string","format":"date-time"},"maximumMicros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."}},"required":["period","startsAt","endsAt","maximumMicros"],"additionalProperties":false}}},"required":["maximumChargeMicros","maximumOperationMicros","minimumReserveMicros","providerUsageHeadroomMicros","startsAt","expiresAt","minimumPortions"],"additionalProperties":false},"receipt":{"anyOf":[{"type":"null"},{"type":"object","properties":{"provider_charge_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"pending_maximum_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"provider_remaining_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"unfinished_operations":{"type":"integer"},"uncertain_operations":{"type":"integer"}},"required":["provider_charge_micros","pending_maximum_micros","provider_remaining_micros","unfinished_operations","uncertain_operations"],"additionalProperties":false}],"description":"Null before approval. Final provider charges exclude the alert minimum; minimumReserveMicros is a conservative reserve, not a final charge. Unfinished operations retain their full ceiling."},"pricing":{"type":"object","properties":{"currency":{"const":"USD"},"provider_gross_margin_bps":{"const":5000},"failed_work_is_chargeable":{"const":true},"monthly_minimum_cents":{"type":"integer"},"timezone":{"type":"string"}},"required":["currency","provider_gross_margin_bps","failed_work_is_chargeable","monthly_minimum_cents","timezone"],"additionalProperties":false},"notice":{"type":"string"}},"required":["id","alert_id","request_hash","status","expires_at","quote_expires_at","approved_at","revoked_at","budget","receipt","pricing","notice"],"additionalProperties":false},"MonitoringResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Monitoring"}},"required":["data"],"additionalProperties":false},"Preview":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"edit_origin":{"anyOf":[{"type":"null"},{"type":"object","properties":{"alert_id":{"type":"integer"},"configuration_revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"requires_targeted_update":{"const":true}},"required":["alert_id","configuration_revision","requires_targeted_update"],"additionalProperties":false}]},"review_url":{"type":"string","description":"Account-authenticated relative path for human review; opening it does not activate monitoring."},"status":{"enum":["awaiting_approval","expired","queued","running","completed","needs_clarification","failed","cancelled"]},"created_at":{"type":"string","format":"date-time"},"quote":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"const":"preview"},"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"currency":{"const":"USD"},"maximum_charge_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"maximum_provider_cost_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"gross_margin_bps":{"const":5000},"flat_fee_micros":{"const":0},"charge_unsuccessful_work":{"const":true},"expires_at":{"type":"string","format":"date-time"},"approved":{"type":"boolean"},"consumed":{"type":"boolean"},"cancelled":{"type":"boolean"},"note":{"type":"string"}},"required":["id","kind","request_hash","currency","maximum_charge_micros","maximum_provider_cost_micros","gross_margin_bps","flat_fee_micros","charge_unsuccessful_work","expires_at","approved","consumed","cancelled","note"],"additionalProperties":false},"spending":{"type":"object","properties":{"daily_limit_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"committed_micros":{"type":"integer","minimum":0},"remaining_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."}},"required":["daily_limit_micros","committed_micros","remaining_micros"],"additionalProperties":false},"receipt":{"type":"object","properties":{"currency":{"const":"USD"},"status":{"enum":["not_started","pending","final"]},"provider_cost_micros":{"type":"integer","minimum":0},"provider_cost_final":{"type":"boolean"},"charged_micros":{"type":["integer","null"],"minimum":0},"maximum_charge_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"work_succeeded":{"type":["boolean","null"]}},"required":["currency","status","provider_cost_micros","provider_cost_final","charged_micros","maximum_charge_micros","work_succeeded"],"additionalProperties":false},"questions":{"type":"array","maxItems":3,"items":{"type":["string","null"]}},"result":{"anyOf":[{"type":"null"},{"type":"object","properties":{"finished_at":{"type":["string","null"],"format":"date-time"},"streams":{"type":"array","maxItems":10,"items":{"type":"object","properties":{"source":{"type":["string","null"]},"outcome":{"type":["string","null"]},"total":{"type":"integer"},"passed":{"type":"integer"},"gated":{"type":"integer"},"sample":{"type":"array","maxItems":20,"items":{"type":"object","properties":{"title":{"type":["string","null"]},"price":{"type":["string","null"]},"location":{"type":["string","null"]},"url":{"type":["string","null"]},"status":{"enum":["pass","filtered","gated","unknown"]},"availability":{"enum":["available","unavailable","unknown"],"description":"What the source itself says about the listing: sold or out-of-stock results still appear in samples but a running alert never sends them."}},"required":["title","price","location","url","status","availability"],"additionalProperties":false}}},"required":["source","outcome","total","passed","gated","sample"],"additionalProperties":false}}},"required":["finished_at","streams"],"additionalProperties":false}]},"message":{"type":["string","null"]},"starts_monitoring":{"const":false},"content_is_untrusted":{"const":true}},"required":["id","edit_origin","review_url","status","created_at","quote","spending","receipt","questions","result","message","starts_monitoring","content_is_untrusted"],"additionalProperties":false},"PreviewResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Preview"}},"required":["data"],"additionalProperties":false},"Check":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"alert_id":{"type":"integer"},"alert_name":{"type":"string"},"status":{"enum":["awaiting_approval","expired","queued","running","completed","failed","cancelled"]},"created_at":{"type":"string","format":"date-time"},"finished_at":{"type":["string","null"],"format":"date-time"},"quote":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"kind":{"const":"check"},"request_hash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"currency":{"const":"USD"},"maximum_charge_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"maximum_provider_cost_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"gross_margin_bps":{"const":5000},"flat_fee_micros":{"const":0},"charge_unsuccessful_work":{"const":true},"expires_at":{"type":"string","format":"date-time"},"approved":{"type":"boolean"},"consumed":{"type":"boolean"},"cancelled":{"type":"boolean"},"note":{"type":"string"}},"required":["id","kind","request_hash","currency","maximum_charge_micros","maximum_provider_cost_micros","gross_margin_bps","flat_fee_micros","charge_unsuccessful_work","expires_at","approved","consumed","cancelled","note"],"additionalProperties":false},"spending":{"type":"object","properties":{"daily_limit_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"committed_micros":{"type":"integer","minimum":0},"remaining_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."}},"required":["daily_limit_micros","committed_micros","remaining_micros"],"additionalProperties":false},"receipt":{"type":"object","properties":{"currency":{"const":"USD"},"status":{"enum":["not_started","pending","final"]},"provider_cost_micros":{"type":"integer","minimum":0},"provider_cost_final":{"type":"boolean"},"charged_micros":{"type":["integer","null"],"minimum":0},"maximum_charge_micros":{"type":"integer","minimum":0,"maximum":1000000000000,"description":"USD micros as an exact integer; 1,000,000 = $1. Spending ceilings are bounded to the safe integer range."},"work_succeeded":{"type":["boolean","null"]}},"required":["currency","status","provider_cost_micros","provider_cost_final","charged_micros","maximum_charge_micros","work_succeeded"],"additionalProperties":false},"result":{"anyOf":[{"type":"null"},{"type":"object","properties":{"checked_sources":{"type":"integer"},"new_results":{"type":"integer"},"changed_results":{"type":"integer"},"matched_results":{"type":"integer"},"incomplete_results":{"type":"integer"}},"required":["checked_sources","new_results","changed_results","matched_results","incomplete_results"],"additionalProperties":false}]},"message":{"type":["string","null"]},"result_url":{"type":"string"},"notifications":{"const":"existing_selected_connections"},"starts_monitoring":{"const":false}},"required":["id","alert_id","alert_name","status","created_at","finished_at","quote","spending","receipt","result","message","result_url","notifications","starts_monitoring"],"additionalProperties":false},"CheckResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Check"}},"required":["data"],"additionalProperties":false},"Error":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}},"required":["code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false},"Source":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"category":{"type":"string"},"description":{"type":"string"},"implementation":{"enum":["fixture_available","planned"]},"availability":{"enum":["normal","temporarily_unavailable"],"description":"temporarily_unavailable means a confirmed outage: new alerts cannot use this source until it is restored. Existing alerts keep their settings."},"scope_verification_required":{"const":true},"filter_types":{"type":"array","items":{"enum":["price","keywords","location"]}},"item_type":{"type":"string"}},"required":["id","name","category","description","implementation","availability","scope_verification_required","filter_types","item_type"],"additionalProperties":false},"SourceCatalog":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Source"}},"note":{"type":"string"}},"required":["data","note"],"additionalProperties":false},"Account":{"type":"object","properties":{"id":{"type":"integer"},"purchased_balance_micros":{"type":"string","pattern":"^-?[0-9]+$","description":"USD micros as a decimal string; 1,000,000 micros = $1."},"promotional_balance_micros":{"type":"string","pattern":"^-?[0-9]+$","description":"USD micros as a decimal string; 1,000,000 micros = $1."},"monthly_cap_micros":{"type":"string","pattern":"^-?[0-9]+$","description":"USD micros as a decimal string; 1,000,000 micros = $1."},"timezone":{"type":"string"},"billing_environment":{"type":"string"},"currency":{"const":"USD"},"balance_note":{"type":"string"}},"required":["id","purchased_balance_micros","promotional_balance_micros","monthly_cap_micros","timezone","billing_environment","currency","balance_note"],"additionalProperties":false},"AccountResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Account"}},"required":["data"],"additionalProperties":false},"Alert":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"type":"string"},"edit_revision":{"type":"string"},"urgency":{"type":"string"},"filters":{"type":"object","additionalProperties":true},"result_review":{"type":"boolean"},"billing_hold":{"type":["string","null"]},"volume_hold":{"type":["string","null"]},"created_at":{"type":"string","format":"date-time"}},"required":["id","name","status","edit_revision","urgency","filters","result_review","billing_hold","volume_hold","created_at"],"additionalProperties":false},"AlertResponse":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Alert"}},"required":["data"],"additionalProperties":false},"AlertsPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Alert"}},"next_before":{"type":["integer","null"]}},"required":["data","next_before"],"additionalProperties":false},"AlertEditResponse":{"type":"object","properties":{"data":{"type":"object","properties":{"id":{"type":"integer"},"name":{"type":"string"},"status":{"type":"string"},"edit_revision":{"type":"string"}},"required":["id","name","status","edit_revision"],"additionalProperties":false}},"required":["data"],"additionalProperties":false},"Result":{"type":"object","properties":{"id":{"type":"integer"},"alert_id":{"type":"integer"},"event":{"type":"string"},"verdict":{"enum":["match","likely"]},"confidence":{"type":["integer","null"]},"review":{"enum":["exact_filters_only","ai_reviewed","not_recorded"]},"created_at":{"type":"string","format":"date-time"},"decided_at":{"type":["string","null"],"format":"date-time"},"seen_at":{"type":["string","null"],"format":"date-time"},"archived_at":{"type":["string","null"],"format":"date-time"},"title":{"type":"string"},"url":{"type":["string","null"]},"price_cents":{"type":["integer","null"]},"currency":{"type":["string","null"]},"location":{"type":["string","null"]},"availability":{"type":"string"}},"required":["id","alert_id","event","verdict","confidence","review","created_at","decided_at","seen_at","archived_at","title","url","price_cents","currency","location","availability"],"additionalProperties":false},"ResultsPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Result"}},"next_before":{"type":["integer","null"]},"note":{"type":"string"}},"required":["data","next_before","note"],"additionalProperties":false},"Capabilities":{"type":"object","description":"Public interface metadata, implemented operations and explicit limitations. No customer information.","additionalProperties":true}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"Poacher scoped API key","description":"Create a short-lived key in Account → Developer access. Keep it out of URLs and browser-delivered code."}}},"x-limits":{"requests_per_key_per_minute":60,"requests_per_network_address_per_minute":120,"global_requests_per_minute":3000,"maximum_page_size":100},"x-money":{"unit":"USD micros","representation":"decimal string for account balances; bounded integers for paid-work spending and receipts","micros_per_dollar":1000000}}