{"openapi":"3.1.0","info":{"title":"AgentShopMap public discovery API","version":"1.0.0","description":"A community directory of ordinary merchant websites and browser-agent task reports. No account is required to read. Compatibility is reported evidence, not a certification or guarantee. Sponsored placement is advertising and does not alter evidence or scores. All lists and details expose approved public content only. Public reads are limited to 120 requests per minute per trusted client address (shared when no trusted proxy is configured). This specification intentionally covers GET endpoints only; authorized contribution workflows are documented separately."},"servers":[{"url":"https://agentshopmap.com"}],"externalDocs":{"description":"Human-readable API and authorized contribution reference","url":"https://agentshopmap.com/api-docs"},"tags":[{"name":"Public discovery","description":"No authentication, MCP server or merchant integration required."}],"paths":{"/api/v1/merchants":{"get":{"operationId":"searchMerchants","summary":"Search and filter merchant websites","tags":["Public discovery"],"security":[],"parameters":[{"name":"q","in":"query","description":"Merchant name or domain.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"category","in":"query","description":"Canonical category slug from GET /api/v1/categories. Original category names remain accepted for compatibility.","required":false,"schema":{"type":"string","maxLength":400}},{"name":"agent","in":"query","description":"An active agent slug from GET /api/v1/agents. Selecting an agent alone includes untested merchants; add outcome or minReports to require evidence.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"outcome","in":"query","description":"A submitted report outcome, not a guaranteed merchant capability. Merchant filters apply to the same approved report.","required":false,"schema":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]}},{"name":"region","in":"query","description":"Known merchant service region, not the contributor’s location.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"stage","in":"query","description":"Exact furthest stage reported, not a claim that all earlier stages succeeded.","required":false,"schema":{"type":"string","enum":["ACCESS","BROWSE","DETAILS","CONFIGURE","CART","CHECKOUT","SHIPPING","PAYMENT_APPROVAL","PURCHASE"]}},{"name":"days","in":"query","description":"Require evidence tested within this many days; submission date is used when test date is absent. Zero disables this filter.","required":false,"schema":{"type":"integer","minimum":0,"maximum":3650,"default":0}},{"name":"minReports","in":"query","description":"Minimum number of approved reports matching the selected agent, outcome, stage and recency filters.","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}},{"name":"sort","in":"query","description":"Sponsored matches appear first, then this order. rating requires an agent and sufficient recent evidence; it is not a product-quality rating.","required":false,"schema":{"type":"string","enum":["recent","popular","name","rating"],"default":"recent"}},{"name":"page","in":"query","description":"Page number. Lists contain 24 items per page.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}}],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/MerchantPage"},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/merchants/{slugOrId}":{"get":{"operationId":"getMerchant","summary":"Merchant identity and compatibility for every active agent","tags":["Public discovery"],"security":[],"parameters":[{"name":"slugOrId","in":"path","required":true,"schema":{"type":"string"},"description":"Canonical merchant slug or existing merchant ID."}],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"$ref":"#/components/schemas/Merchant"},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"308":{"description":"Legacy duplicate listing redirects to the canonical merchant API URL.","headers":{"Location":{"schema":{"type":"string"}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/agents":{"get":{"operationId":"listAgents","summary":"Active, configurable AI agent registry","tags":["Public discovery"],"security":[],"parameters":[],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"agents":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"iconUrl":{"type":["string","null"]}},"required":["id","slug","name","description","iconUrl"]}}},"required":["agents"]},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/agents/{slug}/merchants":{"get":{"operationId":"searchAgentMerchants","summary":"Search merchants for a specific active agent","tags":["Public discovery"],"security":[],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"Active agent slug."},{"name":"q","in":"query","description":"Merchant name or domain.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"category","in":"query","description":"Canonical category slug from GET /api/v1/categories. Original category names remain accepted for compatibility.","required":false,"schema":{"type":"string","maxLength":400}},{"name":"outcome","in":"query","description":"A submitted report outcome, not a guaranteed merchant capability. Merchant filters apply to the same approved report.","required":false,"schema":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]}},{"name":"region","in":"query","description":"Known merchant service region, not the contributor’s location.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"stage","in":"query","description":"Exact furthest stage reported, not a claim that all earlier stages succeeded.","required":false,"schema":{"type":"string","enum":["ACCESS","BROWSE","DETAILS","CONFIGURE","CART","CHECKOUT","SHIPPING","PAYMENT_APPROVAL","PURCHASE"]}},{"name":"days","in":"query","description":"Require evidence tested within this many days; submission date is used when test date is absent. Zero disables this filter.","required":false,"schema":{"type":"integer","minimum":0,"maximum":3650,"default":0}},{"name":"minReports","in":"query","description":"Minimum number of approved reports matching the selected agent, outcome, stage and recency filters.","required":false,"schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}},{"name":"sort","in":"query","description":"Sponsored matches appear first, then this order. rating requires an agent and sufficient recent evidence; it is not a product-quality rating.","required":false,"schema":{"type":"string","enum":["recent","popular","name","rating"],"default":"recent"}},{"name":"page","in":"query","description":"Page number. Lists contain 24 items per page.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}}],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"total":{"type":"integer","minimum":0},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","const":24},"agent":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"]},"merchants":{"type":"array","items":{"$ref":"#/components/schemas/Merchant"}}},"required":["total","page","pageSize","agent","merchants"]},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/categories":{"get":{"operationId":"listCategories","summary":"Published canonical category names, slugs, URLs and merchant counts","tags":["Public discovery"],"security":[],"parameters":[],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"categories":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","description":"Canonical category page path."},"merchantCount":{"type":"integer","minimum":0}},"required":["name","slug","url","merchantCount"]}}},"required":["categories"]},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/reports":{"get":{"operationId":"listReports","summary":"Recent approved community reports, newest submission first","tags":["Public discovery"],"security":[],"parameters":[{"name":"agent","in":"query","description":"An active agent slug from GET /api/v1/agents. Selecting an agent alone includes untested merchants; add outcome or minReports to require evidence.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"merchant","in":"query","description":"Merchant ID, not slug.","required":false,"schema":{"type":"string","maxLength":150}},{"name":"outcome","in":"query","description":"A submitted report outcome, not a guaranteed merchant capability. Merchant filters apply to the same approved report.","required":false,"schema":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]}},{"name":"page","in":"query","description":"Page number. Lists contain 24 items per page.","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":1}}],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"reports":{"type":"array","items":{"$ref":"#/components/schemas/Report"}},"total":{"type":"integer","minimum":0},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","const":24}},"required":["reports","total","page","pageSize"]},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/contribution-schema":{"get":{"operationId":"getContributionSchema","summary":"Read the vocabulary and validation rules for authorized contributions","tags":["Public discovery"],"security":[],"parameters":[],"responses":{"200":{"description":"Approved public information. Unknown and untested are not failures.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"Machine-readable contribution fields, task names, outcomes and limits. Reading this schema grants no submission permission. See /api-docs#contribute and /agent-guide for authentication."},"methodology":{"type":"string","description":"Relative URL describing the shared UI/API aggregation method."},"disclaimer":{"type":"string"}},"required":["data","methodology","disclaimer"]}}}},"400":{"description":"Invalid query or an agent is missing for rating sort.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource or endpoint not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded. Honor Retry-After before retrying.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait."}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Directory temporarily unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"]},"Agent":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"},"name":{"type":"string"}},"required":["id","slug","name"]},"Category":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","description":"Canonical category page path."}},"required":["name","slug","url"]},"MerchantPage":{"type":"object","properties":{"merchants":{"type":"array","items":{"$ref":"#/components/schemas/Merchant"}},"total":{"type":"integer","minimum":0},"page":{"type":"integer","minimum":1},"pageSize":{"type":"integer","const":24}},"required":["merchants","total","page","pageSize"]},"Merchant":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"domain":{"type":["string","null"]},"website":{"type":["string","null"],"format":"uri"},"description":{"type":["string","null"]},"category":{"type":"string","description":"Legacy human-readable category name. Prefer categoryInfo for canonical URLs."},"categoryInfo":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","description":"Canonical category page path."}},"required":["name","slug","url"]},"regions":{"type":"array","items":{"type":"string"}},"sponsored":{"type":"boolean"},"placement":{"type":"string","enum":["sponsored","organic"]},"sponsorshipDisclosure":{"type":["string","null"]},"sponsorshipSource":{"type":["string","null"],"enum":["subscription","publisher_owned",null]},"ownerCompatibility":{"anyOf":[{"type":"null"},{"type":"object","properties":{"status":{"const":"owner_reported"},"label":{"type":"string"},"statement":{"type":"string"},"source":{"const":"business_owner"},"declaredAt":{"type":"string","format":"date"},"independentlyVerified":{"const":false},"scope":{"type":"string"}},"required":["status","label","statement","source","declaredAt","independentlyVerified","scope"]}],"description":"Optional attributed owner declaration; excluded from report counts, community scores and task statuses."},"visual":{"anyOf":[{"type":"null"},{"type":"object","properties":{"src":{"type":"string"},"alt":{"type":"string"},"caption":{"type":"string"}},"required":["src","alt","caption"]}]},"claimed":{"type":"boolean","description":"Approved ownership claim; not compatibility verification."},"reportCount":{"type":"integer","minimum":0},"evidenceState":{"type":"string"},"compatibility":{"type":"array","items":{"$ref":"#/components/schemas/AgentCompatibility"}}},"required":["id","name","slug","domain","website","description","category","categoryInfo","regions","sponsored","placement","sponsorshipDisclosure","sponsorshipSource","ownerCompatibility","visual","claimed","reportCount","evidenceState","compatibility"]},"AgentCompatibility":{"type":"object","properties":{"agentId":{"type":"string"},"agent":{"$ref":"#/components/schemas/Agent"},"label":{"type":"string"},"status":{"type":"string","enum":["supported","partial","blocked","unsupported","unknown","untested"]},"reportCount":{"type":"integer","minimum":0},"recentCount":{"type":"integer","minimum":0},"confidence":{"type":"string","enum":["Low","Medium","High"],"description":"One conclusive approved report within 180 days gives Medium; 20 gives High. Counts remain visible. This is evidence confidence, not independent verification."},"lastTestedAt":{"type":["string","null"],"format":"date-time"},"latestEvidenceAt":{"type":["string","null"],"format":"date-time"},"lastReportedAt":{"type":["string","null"],"format":"date-time"},"scoreBand":{"type":["integer","null"],"minimum":0,"maximum":100,"multipleOf":10,"description":"Rounded recency-weighted score, only with at least three conclusive reports and two within 180 days. Null means insufficient evidence for a numeric band."},"latest":{"type":["string","null"]},"latestSuccess":{"type":["string","null"]},"latestUnsuccessful":{"type":["string","null"]},"stages":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","enum":["ACCESS","BROWSE","DETAILS","CONFIGURE","CART","CHECKOUT","SHIPPING","PAYMENT_APPROVAL","PURCHASE"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["key","label","count"]}},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/Capability"}},"limitations":{"type":"array","items":{"type":"object","properties":{"reason":{"type":"string","enum":["NONE","EXPLICIT_BLOCK","CAPTCHA","INTERFACE","AUTHENTICATION","PAYMENT","OTHER"]},"label":{"type":"string"},"count":{"type":"integer","minimum":0}},"required":["reason","label","count"]}}},"required":["agentId","label","status","reportCount","recentCount","confidence","lastTestedAt","lastReportedAt","latestEvidenceAt","scoreBand","latest","latestSuccess","latestUnsuccessful","stages","capabilities","limitations"]},"Capability":{"type":"object","properties":{"key":{"type":"string","enum":["ACCESS","SEARCH","DETAILS","LOGIN","CART","CHECKOUT","PURCHASE"]},"label":{"type":"string"},"status":{"type":"string","enum":["supported","partial","blocked","unsupported","unknown","untested"]},"statusLabel":{"type":"string"},"reportCount":{"type":"integer","minimum":0},"recentCount":{"type":"integer","minimum":0},"confidence":{"type":"string","enum":["Low","Medium","High"],"description":"One conclusive approved report within 180 days gives Medium; 20 gives High. Counts remain visible. This is evidence confidence, not independent verification."},"conflicting":{"type":"boolean","description":"Substantial recent positive and negative task evidence coexist."},"lastTestedAt":{"type":["string","null"],"format":"date-time"},"latestEvidenceAt":{"type":["string","null"],"format":"date-time"},"explicitCount":{"type":"integer","minimum":0},"reachedStageCount":{"type":"integer","minimum":0},"observations":{"type":"object","properties":{"successful":{"type":"integer","minimum":0},"limited":{"type":"integer","minimum":0},"unsuccessful":{"type":"integer","minimum":0}},"required":["successful","limited","unsuccessful"]},"evidence":{"type":"array","items":{"type":"object","properties":{"reportId":{"type":"string"},"outcome":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"source":{"type":"string","enum":["explicit","reached_stage"]},"date":{"type":"string","format":"date-time"}},"required":["reportId","outcome","source","date"]}}},"required":["key","label","status","statusLabel","reportCount","recentCount","confidence","conflicting","lastTestedAt","latestEvidenceAt","explicitCount","reachedStageCount","observations","evidence"]},"Report":{"type":"object","properties":{"id":{"type":"string"},"adId":{"type":"string"},"agentId":{"type":"string"},"outcome":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"experience":{"type":"string","description":"Optional written notes; may be empty."},"testedAt":{"type":["string","null"],"format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"editedByAdminAt":{"type":["string","null"],"format":"date-time"},"agentVersion":{"type":["string","null"]},"region":{"type":["string","null"]},"task":{"type":["string","null"]},"stage":{"type":["string","null"],"enum":["ACCESS","BROWSE","DETAILS","CONFIGURE","CART","CHECKOUT","SHIPPING","PAYMENT_APPROVAL","PURCHASE",null]},"humanIntervention":{"type":["boolean","null"]},"failureReason":{"type":"string","enum":["NONE","EXPLICIT_BLOCK","CAPTCHA","INTERFACE","AUTHENTICATION","PAYMENT","OTHER"]},"capabilityResults":{"type":["object","null"],"properties":{"ACCESS":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"SEARCH":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"DETAILS":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"LOGIN":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"CART":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"CHECKOUT":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]},"PURCHASE":{"type":"string","enum":["WORKS","PARTIAL","BLOCKED","DOES_NOT_WORK","UNSURE"]}},"additionalProperties":false,"description":"Only attempted tasks are present. Missing keys do not imply failures."},"status":{"type":"string","const":"APPROVED"},"user":{"anyOf":[{"type":"null"},{"type":"object","properties":{"username":{"type":["string","null"]}},"required":["username"]}]},"agent":{"$ref":"#/components/schemas/Agent"},"ad":{"type":"object","properties":{"title":{"type":"string"},"slug":{"type":["string","null"]},"id":{"type":"string"}},"required":["title","slug","id"]},"_count":{"type":"object","properties":{"comments":{"type":"integer","minimum":0}},"required":["comments"]}},"required":["id","adId","agentId","outcome","experience","testedAt","createdAt","updatedAt","editedByAdminAt","agentVersion","region","task","stage","humanIntervention","failureReason","capabilityResults","status","user","agent","ad","_count"]}}}}