{"components":{"securitySchemes":{"AutonetToken":{"description":"Provision via POST /api/v1/keys or Architect login","in":"header","name":"X-Autonet-Token","type":"apiKey"},"HealthOwnerKey":{"description":"Agent-specific key from health registration; distinct from X-Autonet-Token.","scheme":"bearer","type":"http"},"LivenessSubscriptionKey":{"description":"Private subscription key returned once at creation; not an agent owner key.","scheme":"bearer","type":"http"},"UtilityKey":{"scheme":"bearer","type":"http"}}},"info":{"description":"Network intelligence API with Community (1,000 req/mo) and Architect (50,000 req/mo) tiers. Authenticate with X-Autonet-Token.","title":"Autonet Network Probe API","version":"1.1.0"},"openapi":"3.0.0","paths":{"/api/v1/ip/{ip}":{"get":{"description":"Returns geo, ASN, and BGP analysis for a given IP address. Counts toward monthly quota.","operationId":"getIpInfo","parameters":[{"description":"Target IP address","in":"path","name":"ip","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Enriched IP info"}},"security":[{"AutonetToken":[]}],"summary":"Get enriched IP information"}},"/api/v1/keys":{"post":{"operationId":"provisionKey","responses":{"201":{"description":"API key issued"}},"summary":"Provision a Community API key"}},"/api/v1/trace":{"post":{"operationId":"traceTarget","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"audit":{"default":false,"type":"boolean"},"ecmp":{"default":false,"type":"boolean"},"interval_ms":{"default":10,"maximum":50,"minimum":10,"type":"integer"},"max_hops":{"default":30,"maximum":32,"minimum":1,"type":"integer"},"port":{"default":443,"maximum":65535,"minimum":1,"type":"integer"},"protocols":{"items":{"enum":["tcp","icmp","udp"],"type":"string"},"maxItems":3,"minItems":1,"type":"array","uniqueItems":true},"resolve_dns":{"default":false,"type":"boolean"},"target":{"description":"Public IPv4 address or hostname, resolved and pinned by the server","maxLength":253,"type":"string"},"timeout":{"default":5,"maximum":5,"minimum":0.1,"type":"number"}},"required":["target"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Measurement including valid unconfirmed traces"},"400":{"description":"Invalid or non-public target/options"},"429":{"description":"Quota exceeded"},"503":{"description":"Trace capacity or engine unavailable; honor Retry-After"}},"security":[{},{"AutonetToken":[]}],"summary":"On-demand shotgun traceroute"}},"/api/v1/usage":{"get":{"operationId":"getUsage","responses":{"200":{"description":"Usage snapshot"}},"security":[{"AutonetToken":[]}],"summary":"Current monthly and daily quota usage"}},"/health/v1/agents":{"get":{"operationId":"listAgentHealth","parameters":[{"in":"query","name":"mode","schema":{"type":"string"}},{"in":"query","name":"verification","schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Public free-monitoring summaries","tags":["Agent health (free)"]},"post":{"operationId":"registerAgentHealth","requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"not":{"required":["endpoint_url"]},"properties":{"mode":{"enum":["heartbeat"]}},"required":["mode"]},{"properties":{"mode":{"enum":["probe"]}},"required":["endpoint_url"]}],"properties":{"agent_type":{"enum":["chat","cli","service","fleet","other"],"type":"string"},"check_interval_sec":{"default":60,"maximum":3600,"minimum":30,"type":"integer"},"checks_config":{"additionalProperties":false,"description":"Optional readiness assertions. Omit to keep HTTP-only behavior; PATCH {} to clear.","properties":{"body_contains":{"maxLength":256,"minLength":1,"type":"string"},"json_equals":{"description":"Exact top-level JSON field matches; scalar strings, integers, booleans or null. Bodies limited to 64 KiB.","maxProperties":10,"minProperties":1,"type":"object"},"json_freshness":{"additionalProperties":false,"properties":{"field":{"maxLength":80,"minLength":1,"type":"string"},"future_tolerance_sec":{"default":30,"maximum":300,"minimum":0,"type":"integer"},"max_age_sec":{"maximum":604800,"minimum":1,"type":"integer"}},"required":["field","max_age_sec"],"type":"object"},"max_latency_ms":{"maximum":8000,"minimum":1,"type":"integer"},"max_unchanged_sec":{"description":"Opt in only for payloads expected to change. Stores a digest, never the body; configuration changes reset the observation.","maximum":604800,"minimum":30,"type":"integer"}},"type":"object"},"contact":{"description":"Public contact; omit to keep private","maxLength":254,"type":"string"},"endpoint_url":{"description":"Your own deployed public health endpoint. No placeholders, unrelated websites, credentials, private IPs, or redirects.","format":"uri","type":"string"},"heartbeat_enabled":{"default":false,"type":"boolean"},"heartbeat_interval_sec":{"default":300,"maximum":3600,"minimum":60,"type":"integer"},"mode":{"default":"probe","enum":["probe","heartbeat"],"type":"string"},"name":{"maxLength":64,"minLength":3,"pattern":"^[a-z0-9_-]+$","type":"string"},"owner_contact":{"type":"string"},"webhook_url":{"description":"Optional public incident receiver you control; empty string clears it.","type":"string"}},"required":["name"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"409":{"description":"Name taken or reserved after deletion"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Register your own deployed agent endpoint once; store the returned key securely","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}":{"delete":{"operationId":"deleteAgentHealth","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Remove agent and probe history","tags":["Agent health (free)"]},"get":{"operationId":"getAgentHealth","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Read endpoint and heartbeat observations with freshness","tags":["Agent health (free)"]},"patch":{"operationId":"updateAgentHealth","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"agent_type":{"enum":["chat","cli","service","fleet","other"],"type":"string"},"check_interval_sec":{"default":60,"maximum":3600,"minimum":30,"type":"integer"},"checks_config":{"additionalProperties":false,"description":"Optional readiness assertions. Omit to keep HTTP-only behavior; PATCH {} to clear.","properties":{"body_contains":{"maxLength":256,"minLength":1,"type":"string"},"json_equals":{"description":"Exact top-level JSON field matches; scalar strings, integers, booleans or null. Bodies limited to 64 KiB.","maxProperties":10,"minProperties":1,"type":"object"},"json_freshness":{"additionalProperties":false,"properties":{"field":{"maxLength":80,"minLength":1,"type":"string"},"future_tolerance_sec":{"default":30,"maximum":300,"minimum":0,"type":"integer"},"max_age_sec":{"maximum":604800,"minimum":1,"type":"integer"}},"required":["field","max_age_sec"],"type":"object"},"max_latency_ms":{"maximum":8000,"minimum":1,"type":"integer"},"max_unchanged_sec":{"description":"Opt in only for payloads expected to change. Stores a digest, never the body; configuration changes reset the observation.","maximum":604800,"minimum":30,"type":"integer"}},"type":"object"},"contact":{"description":"Public contact; omit to keep private","maxLength":254,"type":"string"},"endpoint_url":{"description":"Your own deployed public health endpoint. No placeholders, unrelated websites, credentials, private IPs, or redirects.","format":"uri","type":"string"},"heartbeat_enabled":{"default":false,"type":"boolean"},"heartbeat_interval_sec":{"default":300,"maximum":3600,"minimum":60,"type":"integer"},"mode":{"default":"probe","enum":["probe","heartbeat"],"type":"string"},"name":{"maxLength":64,"minLength":3,"pattern":"^[a-z0-9_-]+$","type":"string"},"owner_contact":{"type":"string"},"paused":{"type":"boolean"},"webhook_url":{"description":"Optional public incident receiver you control; empty string clears it.","type":"string"}},"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Update endpoint, schedule or pause/resume","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/assessment":{"get":{"operationId":"getAgentAssessment","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Owner-only latest endpoint assessment","tags":["Agent health (free)"]},"post":{"operationId":"runAgentAssessment","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"consent":{"enum":[true],"type":"boolean"}},"required":["consent"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Opt-in two-request assessment; DNS proof required, once/hour","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/attach-endpoint":{"post":{"parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"check_interval_sec":{"default":60,"maximum":3600,"minimum":30,"type":"integer"},"endpoint_url":{"description":"Your own deployed public health endpoint. No placeholders, unrelated websites, credentials, private IPs, or redirects.","format":"uri","type":"string"}},"required":["endpoint_url"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Graduated"},"400":{"description":"Invalid endpoint"},"401":{"description":"Invalid owner key"},"409":{"description":"Already probe mode"}},"security":[{"HealthOwnerKey":[]}],"summary":"Graduate heartbeat registration to independent endpoint probing"}},"/health/v1/agents/{agent_id}/attestation":{"get":{"operationId":"agentSignedEvidence","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Presence evidence, SVG badge, or compact JWS envelope"},"404":{"description":"Unknown agent"},"409":{"description":"Heartbeat mode only"},"429":{"description":"60 shared presence reads/IP/minute"},"503":{"description":"Signing unavailable"}},"security":[],"summary":"Five-minute Ed25519 signed heartbeat observation; not identity or safety certification"}},"/health/v1/agents/{agent_id}/badge.svg":{"get":{"operationId":"getAgentHealthBadge","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Embeddable reliability badge; not identity certification","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/checks":{"get":{"operationId":"getAgentHealthChecks","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"limit","schema":{"default":50,"maximum":500,"minimum":1,"type":"integer"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Read recent HTTP and TLS results","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/feed":{"get":{"operationId":"getAgentEvidenceFeed","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Unsigned evidence with freshness and incident history; not identity certification","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/heartbeat":{"post":{"operationId":"sendAgentHeartbeat","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{"note":{"maxLength":280,"type":"string"},"status":{"enum":["ok","degraded"],"type":"string"},"version":{"maxLength":32,"type":"string"}},"type":"object"}}},"required":false},"responses":{"200":{"description":"Success"},"202":{"description":"Heartbeat accepted"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"409":{"description":"Probe mode does not accept registry heartbeats"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Worker heartbeat; fresh within 2 \u00d7 check interval","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/presence":{"get":{"operationId":"agentPresenceHistory","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Presence evidence, SVG badge, or compact JWS envelope"},"404":{"description":"Unknown agent"},"409":{"description":"Heartbeat mode only"},"429":{"description":"60 shared presence reads/IP/minute"},"503":{"description":"Signing unavailable"}},"security":[],"summary":"30-day self-reported heartbeat windows, gaps and streaks"}},"/health/v1/agents/{agent_id}/presence.svg":{"get":{"operationId":"agentPresenceBadge","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Presence evidence, SVG badge, or compact JWS envelope"},"404":{"description":"Unknown agent"},"409":{"description":"Heartbeat mode only"},"429":{"description":"60 shared presence reads/IP/minute"},"503":{"description":"Signing unavailable"}},"security":[],"summary":"Self-reported presence badge; not an uptime badge"}},"/health/v1/agents/{agent_id}/probe":{"post":{"operationId":"probeAgentNow","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Owner-only immediate probe; once per minute","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/verification":{"get":{"operationId":"getAgentDomainVerification","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[],"summary":"Read exact hostname domain-control proof status","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/verification/challenge":{"post":{"operationId":"issueAgentDomainChallenge","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{},"type":"object"}}},"required":false},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Owner-only DNS TXT challenge, valid for 24 hours until first proof","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/verification/check":{"post":{"operationId":"verifyAgentDomain","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{},"type":"object"}}},"required":false},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Owner-only TXT verification, max once per minute; domain control only","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/vpn/quote":{"post":{"operationId":"quoteAgentAccess","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"duration_minutes":{"maximum":1440,"minimum":1,"type":"integer"},"use_case":{"enum":["private_mcp","private_api","database"],"type":"string"}},"required":["duration_minutes","use_case"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid owner key"},"404":{"description":"Not found"}},"security":[{"HealthOwnerKey":[]}],"summary":"Agent Access pilot; no provisioning or payments","tags":["Agent Access pilot"]}},"/health/v1/agents/{agent_id}/vpn/requests":{"get":{"operationId":"listAgentAccessRequests","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid owner key"},"404":{"description":"Not found"}},"security":[{"HealthOwnerKey":[]}],"summary":"Agent Access pilot; no provisioning or payments","tags":["Agent Access pilot"]},"post":{"operationId":"requestAgentAccessPilot","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"consent":{"enum":[true],"type":"boolean"},"duration_minutes":{"maximum":1440,"minimum":1,"type":"integer"},"max_price_cents":{"maximum":10000,"minimum":1,"type":"integer"},"request_key":{"pattern":"^[A-Za-z0-9_-]{8,80}$","type":"string"},"use_case":{"enum":["private_mcp","private_api","database"],"type":"string"}},"required":["duration_minutes","use_case","consent","max_price_cents","request_key"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"201":{"description":"Pilot interest recorded; no tunnel or charge"},"400":{"description":"Invalid request"},"401":{"description":"Invalid owner key"},"404":{"description":"Not found"}},"security":[{"HealthOwnerKey":[]}],"summary":"Agent Access pilot; no provisioning or payments","tags":["Agent Access pilot"]}},"/health/v1/agents/{agent_id}/vpn/requests/{request_id}":{"delete":{"operationId":"cancelAgentAccessRequest","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}},{"in":"path","name":"request_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid owner key"},"404":{"description":"Not found"}},"security":[{"HealthOwnerKey":[]}],"summary":"Agent Access pilot; no provisioning or payments","tags":["Agent Access pilot"]}},"/health/v1/agents/{agent_id}/webhook-secret":{"get":{"operationId":"getAgentWebhookSecret","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Owner-only signing secret retrieval","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/webhook-secret/rotate":{"post":{"operationId":"rotateAgentWebhookSecret","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Rotate signing secret immediately","tags":["Agent health (free)"]}},"/health/v1/agents/{agent_id}/webhook-test":{"post":{"operationId":"testAgentWebhook","parameters":[{"in":"path","name":"agent_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{},"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid fields or unsafe endpoint"},"401":{"description":"Invalid owner key"},"404":{"description":"Unknown agent"},"429":{"description":"Rate limit; honor Retry-After","headers":{"Retry-After":{"description":"Seconds before retry","schema":{"type":"integer"}}}}},"security":[{"HealthOwnerKey":[]}],"summary":"Send one signed incident.test to the configured receiver; no incident or score changes","tags":["Agent health (free)"]}},"/health/v1/assert/healthy":{"post":{"description":"Shared 10 diagnostic attempts/IP/fixed 24h. HEAD by default; one GET for literal body or JSON scalar matching. No redirects, private destinations, credentials or query strings. Explicit http_status replaces 2xx, never transport/TLS validation. Body cap 64 KiB, UTF-8 replacement for literal matching, strict UTF-8 JSON for JSON checks; oversized or compressed bodies fail. Timing includes body retrieval. Snippets are untrusted and not stored.","operationId":"assertHealthy","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expect":{"additionalProperties":false,"properties":{"body_contains":{"description":"Case-sensitive literal UTF-8 substring, not regex","maxLength":256,"minLength":1,"type":"string"},"http_status":{"maximum":599,"minimum":200,"type":"integer"},"json_assertions":{"items":{"additionalProperties":false,"properties":{"equals":{"description":"Scalar string (max 256 characters), finite number within \u00b11e100, boolean or null; exact typed equality"},"pointer":{"description":"RFC 6901 pointer; empty selects root","maxLength":256,"type":"string"}},"required":["pointer","equals"],"type":"object"},"maxItems":10,"minItems":1,"type":"array"},"max_response_ms":{"maximum":10000,"minimum":1,"type":"integer"}},"type":"object"},"url":{"format":"uri","maxLength":2048,"type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"context":{"type":"string"},"evidence":{"description":"Diagnostic cause, stage, completed-stage timings, duration_ms, TLS summary, HTTP status and optional bounded untrusted body snippet","type":"object"},"failures":{"items":{"properties":{"context":{"type":"string"},"expectation":{"type":"string"},"observed":{}},"required":["expectation","observed","context"],"type":"object"},"type":"array"},"pass":{"type":"boolean"}},"required":["context","pass","evidence"],"type":"object"}}},"description":"pass true","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}}},"400":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"context":{"type":"string"},"evidence":{"description":"Diagnostic cause, stage, completed-stage timings, duration_ms, TLS summary, HTTP status and optional bounded untrusted body snippet","type":"object"},"failures":{"items":{"properties":{"context":{"type":"string"},"expectation":{"type":"string"},"observed":{}},"required":["expectation","observed","context"],"type":"object"},"type":"array"},"pass":{"type":"boolean"}},"required":["context"],"type":"object"}}},"description":"Invalid input or unsafe_destination","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}}},"422":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"context":{"type":"string"},"evidence":{"description":"Diagnostic cause, stage, completed-stage timings, duration_ms, TLS summary, HTTP status and optional bounded untrusted body snippet","type":"object"},"failures":{"items":{"properties":{"context":{"type":"string"},"expectation":{"type":"string"},"observed":{}},"required":["expectation","observed","context"],"type":"object"},"type":"array"},"pass":{"type":"boolean"}},"required":["context","pass","evidence","failures"],"type":"object"}}},"description":"pass false with failures and evidence","headers":{"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}}},"429":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"context":{"type":"string"},"evidence":{"description":"Diagnostic cause, stage, completed-stage timings, duration_ms, TLS summary, HTTP status and optional bounded untrusted body snippet","type":"object"},"failures":{"items":{"properties":{"context":{"type":"string"},"expectation":{"type":"string"},"observed":{}},"required":["expectation","observed","context"],"type":"object"},"type":"array"},"pass":{"type":"boolean"}},"required":["context"],"type":"object"}}},"description":"Shared diagnostic quota exhausted; honor Retry-After","headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}}},"503":{"content":{"application/json":{"schema":{"properties":{"code":{"type":"string"},"context":{"type":"string"},"evidence":{"description":"Diagnostic cause, stage, completed-stage timings, duration_ms, TLS summary, HTTP status and optional bounded untrusted body snippet","type":"object"},"failures":{"items":{"properties":{"context":{"type":"string"},"expectation":{"type":"string"},"observed":{}},"required":["expectation","observed","context"],"type":"object"},"type":"array"},"pass":{"type":"boolean"}},"required":["context"],"type":"object"}}},"description":"Diagnostic capacity or worker unavailable","headers":{"Retry-After":{"schema":{"type":"integer"}},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}}}},"security":[],"summary":"One-shot deployment gate with diagnostic evidence; no registration"}},"/health/v1/diagnostics/http":{"post":{"operationId":"diagnoseHttp","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"url":{"description":"HTTP port 80 or HTTPS port 443; no credentials, query or fragment","format":"uri","type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Measurement complete. Inspect cause and ok; endpoint failures also return 200."},"400":{"description":"Invalid input or non-public destination"},"429":{"description":"10 attempts per IP per fixed 24h window; honor Retry-After"},"503":{"description":"Capacity or diagnostic worker unavailable"}},"security":[],"summary":"Diagnose public DNS, TCP, TLS and HTTP headers without registration"}},"/health/v1/diagnostics/mcp":{"post":{"operationId":"diagnoseMcp","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"url":{"description":"HTTP port 80 or HTTPS port 443; no credentials, query or fragment","format":"uri","type":"string"}},"required":["url"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Measurement complete. Inspect cause and ok; endpoint failures also return 200."},"400":{"description":"Invalid input or non-public destination"},"429":{"description":"10 attempts per IP per fixed 24h window; honor Retry-After"},"503":{"description":"Capacity or diagnostic worker unavailable"}},"security":[],"summary":"Anonymous Streamable HTTP initialize and tools/list; no tool invocation; shared diagnostic quota"}},"/health/v1/evidence/keys":{"get":{"operationId":"evidenceSigningKeys","responses":{"200":{"description":"Public verification keys and active_kid"},"503":{"description":"Signing not configured"}},"security":[],"summary":"Public Ed25519 JWKS; no private material"}},"/health/v1/network/identity":{"get":{"operationId":"networkIdentity","responses":{"200":{"description":"Observed caller identity; cache may be unavailable"},"400":{"description":"Invalid address or unexpected query"},"429":{"description":"60 reads per IP per minute"}},"security":[],"summary":"Caller source IP and cached ASN/geo; no inbound reachability claim"}},"/health/v1/subscriptions":{"post":{"operationId":"subscribeLiveness","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"agent_ids":{"items":{"type":"string"},"maxItems":20,"minItems":1,"type":"array","uniqueItems":true}},"required":["agent_ids"],"type":"object"}}},"required":true},"responses":{"201":{"description":"Save subscription_key and initial cursor; includes current snapshot"},"400":{"description":"Invalid input"},"404":{"description":"Unknown target"},"409":{"description":"Only heartbeat-mode targets supported"},"429":{"description":"10 creation attempts/IP/24h"},"503":{"description":"Subscription capacity reached"}},"security":[],"summary":"Seven-day pull subscription to self-reported heartbeat transitions"}},"/health/v1/subscriptions/{subscription_id}":{"delete":{"operationId":"deleteLivenessSubscription","parameters":[{"in":"path","name":"subscription_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Events and next_cursor, or successful revocation"},"400":{"description":"Invalid cursor"},"404":{"description":"Unknown/expired subscription or invalid key"},"410":{"description":"Expired subscription; create a fresh snapshot"},"429":{"description":"30 reads/subscription/minute"}},"security":[{"LivenessSubscriptionKey":[]}]}},"/health/v1/subscriptions/{subscription_id}/events":{"get":{"operationId":"readLivenessEvents","parameters":[{"in":"path","name":"subscription_id","required":true,"schema":{"type":"string"}},{"description":"Saved cursor; next_cursor advances only after processing","in":"query","name":"after","required":true,"schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"description":"Events and next_cursor, or successful revocation"},"400":{"description":"Invalid cursor"},"404":{"description":"Unknown/expired subscription or invalid key"},"410":{"description":"Expired subscription; create a fresh snapshot"},"429":{"description":"30 reads/subscription/minute"}},"security":[{"LivenessSubscriptionKey":[]}]}},"/health/v1/vpn":{"get":{"operationId":"getAgentAccessCatalog","parameters":[],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid owner key"},"404":{"description":"Not found"}},"security":[],"summary":"Agent Access pilot; no provisioning or payments","tags":["Agent Access pilot"]}},"/probe-me":{"get":{"description":"Performs a network probe (TCP or ICMP) to measure latency, packet loss, and path.","operationId":"probeMe","parameters":[{"description":"IP address or hostname to probe. If omitted, probes the caller's own IP.","in":"query","name":"target","required":false,"schema":{"type":"string"}},{"description":"Probe method: tcp or icmp","in":"query","name":"method","required":false,"schema":{"default":"tcp","enum":["tcp","icmp"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"client_ip":{"type":"string"},"loss":{"type":"string"},"origin":{"type":"string"},"path":{"items":{"type":"string"},"type":"array"},"target":{"type":"string"},"time":{"type":"string"}},"type":"object"}}},"description":"Successful probe result"}},"summary":"Probe the caller's IP or a specified target"}},"/utils/hooks/{inbox_id}":{"post":{"operationId":"receiveCallback","parameters":[{"in":"path","name":"inbox_id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{"format":"binary","maxLength":8192,"type":"string"}}},"required":true},"responses":{"200":{"description":"Success"},"202":{"description":"Stored; sender identity not verified"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[]}},"/utils/v1/account":{"get":{"operationId":"utilityAccount","responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]}},"/utils/v1/accounts":{"post":{"operationId":"createUtilityAccount","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"201":{"description":"Created"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[]}},"/utils/v1/catalog":{"get":{"operationId":"utilityCatalog","responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[]}},"/utils/v1/diagnostics":{"post":{"operationId":"runCreditDiagnostic","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"expect":{"type":"object"},"kind":{"enum":["http","mcp","assert"],"type":"string"},"max_coins":{"maximum":10000,"minimum":0,"type":"integer"},"request_key":{"maxLength":80,"minLength":8,"type":"string"},"url":{"type":"string"}},"required":["kind","url","request_key","max_coins"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"201":{"description":"Created"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]}},"/utils/v1/funding/checkout":{"post":{"operationId":"createFundingCheckout","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"max_usd_cents":{"maximum":10000,"minimum":500,"type":"integer"},"request_key":{"maxLength":80,"minLength":8,"type":"string"}},"required":["request_key","max_usd_cents"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"201":{"description":"Created"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]}},"/utils/v1/inboxes":{"get":{"operationId":"listCallbackInboxes","responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]},"post":{"operationId":"createCallbackInbox","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"max_coins":{"maximum":10000,"minimum":0,"type":"integer"},"request_key":{"pattern":"^[A-Za-z0-9_-]{8,80}$","type":"string"}},"required":["request_key","max_coins"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"201":{"description":"Created"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]}},"/utils/v1/inboxes/{inbox_id}":{"delete":{"operationId":"deleteCallbackInbox","parameters":[{"in":"path","name":"inbox_id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]}},"/utils/v1/inboxes/{inbox_id}/events":{"get":{"operationId":"readCallbackEvents","parameters":[{"in":"path","name":"inbox_id","required":true,"schema":{"type":"string"}},{"in":"query","name":"after","schema":{"minimum":0,"type":"integer"}}],"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[{"UtilityKey":[]}]}},"/utils/v1/pricing":{"get":{"operationId":"autonetPricing","responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[]}},"/utils/v1/sandbox":{"get":{"operationId":"sandboxInstructions","responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[]},"post":{"operationId":"runAutonetSandbox","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":false,"properties":{"scenario":{"enum":["healthy","incident","stale_payload"],"type":"string"}},"required":["scenario"],"type":"object"}}},"required":true},"responses":{"200":{"description":"Success"},"400":{"description":"Invalid request"},"401":{"description":"Invalid utility key"},"402":{"description":"Free allowance exhausted; paid usage unavailable"},"404":{"description":"Not found or expired"},"409":{"description":"Price exceeds max_coins"},"410":{"description":"Previously created inbox expired or deleted; no new charge"},"411":{"description":"Content-Length required"},"413":{"description":"Payload too large"},"429":{"description":"Capacity or rate limit; honor Retry-After"},"503":{"description":"Beta capacity or service unavailable"}},"security":[]}}},"servers":[{"description":"Production Server","url":"https://autonet.work"}]}
