{"openapi":"3.1.0","info":{"title":"My LAN Builder Agent API","version":"1.0.0","description":"Stateless UniFi planning using the website compatibility engine. No checkout, arbitrary browsing or device configuration. Prices are dated snapshots; unknown facts require review. Affiliate links are disclosed per exact SKU."},"servers":[{"url":"https://mylanbuilder.com"}],"paths":{"/api/agent":{"get":{"operationId":"discoverPlanner","summary":"Read workflow, defaults, roles, schemas, limits and links","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/agent/build":{"post":{"operationId":"editAndCheckBuild","summary":"Start, edit or evaluate a build; return missing requirements, wiring and purchase options","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"build":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"operations":{"type":"array","maxItems":40,"items":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"action":{"const":"add"},"productId":{"type":"string","maxLength":500},"variantId":{"type":"string","maxLength":500},"quantity":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"options":{"type":"object","additionalProperties":false,"properties":{"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}}},"replaceLineKey":{"type":"string","maxLength":500}},"required":["action","productId"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"update"},"lineKey":{"type":"string","maxLength":500},"variantId":{"type":"string","maxLength":500},"quantity":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"options":{"type":"object","additionalProperties":false,"properties":{"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}}}},"required":["action","lineKey"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"remove"},"lineKey":{"type":"string","maxLength":500}},"required":["action","lineKey"]},{"type":"object","additionalProperties":false,"properties":{"action":{"const":"connect"},"consumerKey":{"type":"string","maxLength":500},"sourceKey":{"type":["string","null"],"maxLength":500},"portId":{"type":"string","maxLength":500}},"required":["action","consumerKey","sourceKey"]}]}},"includeDiagram":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["build","status","summary","slots","issues","nextActions","purchasing"],"properties":{"build":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]},"status":{"enum":["incomplete","review_required","checked"],"description":"Checked means no unresolved modeled issues, not a guarantee of installation fitness."},"speedPlan":{"type":["object","null"],"description":"Verified, unverified and missing client sockets by speed after real cable assignments, plus uplink target and speed issues."},"summary":{"type":"object","properties":{"errors":{"type":"integer","minimum":0,"maximum":1000000},"reviews":{"type":"integer","minimum":0,"maximum":1000000},"knownSubtotalUsd":{"type":"number","minimum":0,"maximum":1000000},"unpricedPurchaseLines":{"type":"integer","minimum":0,"maximum":1000000},"unfilledRequiredSlots":{"type":"array","items":{"type":"string"}}}},"slots":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"required":{"type":"boolean"},"state":{"enum":["covered","missing","empty","review","optional"]},"choose":{"type":"object"}}}},"issues":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"nextActions":{"type":"array","items":{"type":"object"}},"lines":{"type":"array","items":{"type":"object","properties":{"lineKey":{"type":"string"},"quantity":{"type":"integer","minimum":0,"maximum":1000000},"owned":{"type":"boolean"},"product":{"type":"object","required":["productId","name","variantId","sku","stores"],"properties":{"productId":{"type":"string"},"name":{"type":"string"},"model":{"type":"string"},"variantId":{"type":["string","null"]},"sku":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"packSize":{"type":"integer"},"unitPrice":{"type":["number","null"]},"metrics":{"type":"object","description":"Verified LAN/PoE/WAN counts, apps, WiFi, throughput and storage; unknown values are null."},"power":{"type":"object"},"recording":{"type":"object"},"stores":{"type":"array","items":{"type":"object","required":["retailer","url","affiliate","unitPrice","currency"],"properties":{"retailer":{"type":"string"},"url":{"type":"string","format":"uri"},"affiliate":{"type":"boolean"},"linkType":{"enum":["product","search"],"description":"Search links are not verified product listings; confirm the SKU, region and pack size at the store."},"listingVerified":{"type":"boolean"},"matchNote":{"type":["string","null"]},"unitPrice":{"type":["number","null"]},"total":{"type":["number","null"]},"currency":{"const":"USD"},"checkedAt":{"type":["string","null"]},"priceKind":{"type":"string"},"disclosure":{"type":["string","null"]}}}},"links":{"type":"object"},"sources":{"type":"object"}}}}}},"units":{"type":"array","items":{"type":"object","description":"Expanded physical units; unitKey is used for cable connections."}},"assignments":{"type":"object"},"diagram":{"type":"object"},"wiringWarnings":{"type":"array","items":{"type":"object"}},"purchasing":{"type":"object","properties":{"disclosure":{"type":"string"},"purchases":{"type":"array","items":{"type":"object","properties":{"lineKey":{"type":"string"},"quantity":{"type":"integer","minimum":0,"maximum":1000000},"stores":{"type":"array","items":{"type":"object","required":["retailer","url","affiliate","unitPrice","currency"],"properties":{"retailer":{"type":"string"},"url":{"type":"string","format":"uri"},"affiliate":{"type":"boolean"},"linkType":{"enum":["product","search"],"description":"Search links are not verified product listings; confirm the SKU, region and pack size at the store."},"listingVerified":{"type":"boolean"},"matchNote":{"type":["string","null"]},"unitPrice":{"type":["number","null"]},"total":{"type":["number","null"]},"currency":{"const":"USD"},"checkedAt":{"type":["string","null"]},"priceKind":{"type":"string"},"disclosure":{"type":["string","null"]}}}}}}}}},"share":{"type":"object"}}}}}},"400":{"description":"Invalid fields, SKU or build","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Request exceeds documented limits","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; respect Retry-After","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/agent/options":{"post":{"operationId":"findPartOptions","summary":"Filter exact SKU options and preview their effect; optionally resolve an issue","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"build":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]},"role":{"enum":["gateway","wan","cellular","controller","wifi","switch","power","camera","recorder","disk","accessory"]},"issueCode":{"type":"string","maxLength":500},"replaceKey":{"type":"string","maxLength":500},"narrow":{"type":"boolean"},"filters":{"type":"object","additionalProperties":false,"properties":{"q":{"type":"string","maxLength":200},"category":{"type":"string","maxLength":50},"minPrice":{"type":"number","minimum":0,"maximum":1000000},"maxPrice":{"type":"number","minimum":0,"maximum":1000000},"minLanPorts":{"type":"integer","minimum":0,"maximum":500,"description":"Verified LAN sockets after configured Ethernet WAN remapping, before assigning downstream devices."},"minPortSpeedMbps":{"enum":[100,1000,2500,5000,10000,25000,40000,100000],"description":"Minimum advertised port speed, paired with minSpeedPorts (default 1) and portConnector (default RJ45). Physical totals include WAN sockets; build checks subtract reserved WAN/uplink/device use."},"minSpeedPorts":{"type":"integer","minimum":0,"maximum":500},"portConnector":{"enum":["RJ45","SFP","SFP+","SFP28","QSFP+","QSFP28"]},"minPoePorts":{"type":"integer","minimum":0,"maximum":500,"description":"Verified powered OUTPUT ports, separate from total LAN sockets and PoE inputs."},"minPoeBudgetWatts":{"type":"number","minimum":0,"maximum":10000,"description":"Verified fixed output budget. Input-dependent budgets are excluded."},"minOutputPoeRank":{"type":"integer","minimum":1,"maximum":4},"wifiGeneration":{"enum":["WiFi 4","WiFi 5","WiFi 6","WiFi 6E","WiFi 7"]},"hostsNetwork":{"type":"boolean"},"hostsProtect":{"type":"boolean"},"minWanPorts":{"type":"integer","minimum":0,"maximum":8},"minIpsMbps":{"type":"number","minimum":0,"maximum":100000},"maxDrawWatts":{"type":"number","minimum":0,"maximum":10000},"storageType":{"enum":["nvme","sata-3.5","sata-2.5","microsd"],"description":"Recording drive/card interface, not a host system SSD or NAS."},"minStorageGB":{"type":"integer","minimum":0,"maximum":100000,"description":"Capacity of a recording drive/card SKU, not included host capacity."},"resolution":{"enum":["HD","2K","4K"]},"availableOnly":{"type":"boolean"},"affiliateOnly":{"type":"boolean","description":"Only exact SKUs with a verified configured affiliate link; use only if the user requests this filter."}}},"sort":{"enum":["priceAsc","priceDesc","name"]},"offset":{"type":"integer","minimum":0,"maximum":10000},"limit":{"type":"integer","minimum":1,"maximum":10},"quantity":{"type":"integer","minimum":1,"maximum":100},"compatibleOnly":{"type":"boolean"}}}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","required":["build","pagination","options"],"properties":{"build":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]},"pagination":{"type":"object","properties":{"nextOffset":{"type":["integer","null"]},"totalMatchingSkus":{"type":"integer","minimum":0,"maximum":1000000},"returned":{"type":"integer","minimum":0,"maximum":1000000}}},"options":{"type":"array","items":{"type":"object","properties":{"product":{"type":"object","required":["productId","name","variantId","sku","stores"],"properties":{"productId":{"type":"string"},"name":{"type":"string"},"model":{"type":"string"},"variantId":{"type":["string","null"]},"sku":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"packSize":{"type":"integer"},"unitPrice":{"type":["number","null"]},"metrics":{"type":"object","description":"Verified LAN/PoE/WAN counts, apps, WiFi, throughput and storage; unknown values are null."},"power":{"type":"object"},"recording":{"type":"object"},"stores":{"type":"array","items":{"type":"object","required":["retailer","url","affiliate","unitPrice","currency"],"properties":{"retailer":{"type":"string"},"url":{"type":"string","format":"uri"},"affiliate":{"type":"boolean"},"linkType":{"enum":["product","search"],"description":"Search links are not verified product listings; confirm the SKU, region and pack size at the store."},"listingVerified":{"type":"boolean"},"matchNote":{"type":["string","null"]},"unitPrice":{"type":["number","null"]},"total":{"type":["number","null"]},"currency":{"const":"USD"},"checkedAt":{"type":["string","null"]},"priceKind":{"type":"string"},"disclosure":{"type":["string","null"]}}}},"links":{"type":"object"},"sources":{"type":"object"}}},"assessment":{"type":"object","properties":{"resultingBuildStatus":{"enum":["incomplete","review_required","checked"]},"introduces":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"resolves":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"remainingErrors":{"type":"integer","minimum":0,"maximum":1000000},"remainingReviews":{"type":"integer","minimum":0,"maximum":1000000},"hasConflict":{"type":"boolean"}}},"selection":{"type":"object","additionalProperties":false,"properties":{"action":{"const":"add"},"productId":{"type":"string","maxLength":500},"variantId":{"type":"string","maxLength":500},"quantity":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"options":{"type":"object","additionalProperties":false,"properties":{"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}}},"replaceLineKey":{"type":"string","maxLength":500}},"required":["action","productId"]},"remainingIssues":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"apply":{"type":"object","description":"POST apply.body to apply.endpoint. It includes the complete context build and selected operation."}}}},"notes":{"type":"array","items":{"type":"string"}}}}}}},"400":{"description":"Invalid fields, SKU or build","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Request exceeds documented limits","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; respect Retry-After","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/agent/compare":{"post":{"operationId":"comparePartOptions","summary":"Compare up to ten exact SKUs in the same build","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"build":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]},"replaceKey":{"type":"string","maxLength":500},"candidates":{"type":"array","minItems":1,"maxItems":10,"items":{"type":"object","additionalProperties":false,"properties":{"productId":{"type":"string","maxLength":500},"variantId":{"type":"string","maxLength":500},"quantity":{"type":"integer","minimum":1,"maximum":100},"options":{"type":"object","additionalProperties":false,"properties":{"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}}}},"required":["productId"]}}},"required":["candidates"]}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"build":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]},"comparisons":{"type":"array","items":{"type":"object","properties":{"product":{"type":"object","required":["productId","name","variantId","sku","stores"],"properties":{"productId":{"type":"string"},"name":{"type":"string"},"model":{"type":"string"},"variantId":{"type":["string","null"]},"sku":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"packSize":{"type":"integer"},"unitPrice":{"type":["number","null"]},"metrics":{"type":"object","description":"Verified LAN/PoE/WAN counts, apps, WiFi, throughput and storage; unknown values are null."},"power":{"type":"object"},"recording":{"type":"object"},"stores":{"type":"array","items":{"type":"object","required":["retailer","url","affiliate","unitPrice","currency"],"properties":{"retailer":{"type":"string"},"url":{"type":"string","format":"uri"},"affiliate":{"type":"boolean"},"linkType":{"enum":["product","search"],"description":"Search links are not verified product listings; confirm the SKU, region and pack size at the store."},"listingVerified":{"type":"boolean"},"matchNote":{"type":["string","null"]},"unitPrice":{"type":["number","null"]},"total":{"type":["number","null"]},"currency":{"const":"USD"},"checkedAt":{"type":["string","null"]},"priceKind":{"type":"string"},"disclosure":{"type":["string","null"]}}}},"links":{"type":"object"},"sources":{"type":"object"}}},"assessment":{"type":"object","properties":{"resultingBuildStatus":{"enum":["incomplete","review_required","checked"]},"introduces":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"resolves":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"remainingErrors":{"type":"integer","minimum":0,"maximum":1000000},"remainingReviews":{"type":"integer","minimum":0,"maximum":1000000},"hasConflict":{"type":"boolean"}}},"selection":{"type":"object","additionalProperties":false,"properties":{"action":{"const":"add"},"productId":{"type":"string","maxLength":500},"variantId":{"type":"string","maxLength":500},"quantity":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"options":{"type":"object","additionalProperties":false,"properties":{"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}}},"replaceLineKey":{"type":"string","maxLength":500}},"required":["action","productId"]},"remainingIssues":{"type":"array","items":{"type":"object","required":["code","severity","title","detail"],"properties":{"code":{"type":"string"},"severity":{"enum":["error","review"]},"title":{"type":"string"},"detail":{"type":"string"},"next":{"type":"object","description":"Follow endpoint/method/arguments with the current build, or ask for human confirmation when requiresHuman is true."}}}},"apply":{"type":"object","description":"POST apply.body to apply.endpoint. It includes the complete context build and selected operation."}}}}}}}}},"400":{"description":"Invalid fields, SKU or build","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"413":{"description":"Request exceeds documented limits","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"415":{"description":"JSON required","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limit; respect Retry-After","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/agent/products/{id}":{"get":{"operationId":"readProduct","summary":"Read exact product variants, verified specifications, ports, provenance and purchase links","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}},{"name":"variantId","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Unknown SKU","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Unknown product","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/builds":{"post":{"operationId":"shareBuild","summary":"Persist an immutable public-by-link snapshot after checking the build","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"schemaVersion":{"const":2},"items":{"type":"array","maxItems":40,"items":{"type":"object","additionalProperties":false,"properties":{"id":{"type":"string","maxLength":200},"variantId":{"type":"string","maxLength":500},"qty":{"type":"integer","minimum":1,"maximum":100},"owned":{"type":"boolean"},"usage":{"enum":["gateway","router","ap"]},"hostKey":{"type":"string","maxLength":500},"recorderKey":{"type":"string","maxLength":500},"powerMode":{"enum":["auto","included","poe","external"]},"uplinkMode":{"enum":["wired","mesh"]},"confirmedIncludedGB":{"type":"integer","minimum":0,"maximum":100000},"instanceId":{"type":"string","maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"custom":{"type":"object","additionalProperties":false,"properties":{"name":{"type":"string","maxLength":100},"type":{"enum":["nvme","sata-3.5","sata-2.5","microsd"]},"capacityGB":{"type":"number","minimum":1,"maximum":100000},"priceUsd":{"type":"number","minimum":0,"maximum":100000}},"required":["name","type","capacityGB","priceUsd"]}},"required":["id","qty"]}},"requirements":{"type":"object","additionalProperties":false,"properties":{"wifi":{"type":"boolean"},"wifi7":{"type":"boolean"},"ethernet":{"type":"boolean"},"existingRouter":{"type":"boolean"},"existingNetwork":{"type":"boolean"},"existingProtect":{"type":"boolean"},"requireController":{"type":"boolean"},"dualIsp":{"type":"boolean"},"cellularBackup":{"type":"boolean"},"secondIspReady":{"type":"boolean"},"cellularPlanReady":{"type":"boolean"},"internetMbps":{"type":"number","minimum":0,"maximum":100000},"cameras":{"type":"number","minimum":0,"maximum":100},"wiredClients":{"type":"number","minimum":0,"maximum":500},"wired2_5Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 2.5G negotiation; included in wiredClients, or automatically raises that total. Distinct from wired10Clients."},"wired10Clients":{"type":"integer","minimum":0,"maximum":500,"description":"Number of RJ45 clients needing 10G; included in wiredClients, or automatically raises that total. Distinct from wired2_5Clients."},"budget":{"type":"number","minimum":0,"maximum":1000000},"sqft":{"type":"number","minimum":0,"maximum":1000000},"floors":{"type":"number","minimum":0,"maximum":20},"retentionDays":{"type":"number","minimum":0,"maximum":3650},"existingLanPorts":{"type":"number","minimum":0,"maximum":500},"controllerKey":{"type":"string","maxLength":500},"recordingHostKey":{"type":"string","maxLength":500},"wanMode":{"enum":["failover","balance"]},"primaryWanInterface":{"enum":["rj45","sfp"]},"secondIspInterface":{"enum":["rj45","sfp"]},"lanUplinkMbps":{"enum":[0,1000,2500,10000],"description":"Minimum wired switch backbone target. AP links are checked up to their native port limit. This is distinct from Internet speed and routing throughput."},"connections":{"type":"object","maxProperties":64,"additionalProperties":{"type":"object","additionalProperties":false,"properties":{"sourceKey":{"type":"string","maxLength":500},"portId":{"type":"string","pattern":"^[a-z0-9-]{1,50}$"},"automatic":{"type":"boolean"}},"required":["sourceKey"]}}}},"catalogCheckedAt":{"type":"string","maxLength":500}},"required":["schemaVersion","items","requirements"]}}}},"responses":{"201":{"description":"Snapshot saved: id and path; resolve path against this server","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"400":{"description":"Invalid build","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"429":{"description":"Rate limited","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"503":{"description":"Postgres unavailable","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}},"/api/builds/{id}":{"get":{"operationId":"loadSharedBuild","summary":"Read a shared snapshot; pass its build to agent endpoints","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","pattern":"^[A-Za-z0-9_-]{22}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"404":{"description":"Snapshot not found","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}}}}}}}