{"openapi":"3.1.0","info":{"title":"Shoplens API","description":"Data on Shopify stores: metrics, best sellers, ads on Meta, Google and TikTok, and people at each store's company. Every endpoint needs an API key (`Authorization: Bearer <key>`). Read the guide (https://data.shoplens.dev/llms-full.txt) for pagination, identifiers and how the data is fetched and stored.","version":"1.0.0"},"servers":[{"url":"https://data.shoplens.dev/api/v1","description":"Production"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"Your Shoplens API key"}},"schemas":{"ShopList":{"type":"object","properties":{"shops":{"type":"array","items":{"$ref":"#/components/schemas/ShopSummary"}},"hasNextPage":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` to get the next page; null on the last page","type":["string","null"]}},"required":["shops","hasNextPage","nextCursor"],"additionalProperties":false},"ShopSummary":{"type":"object","properties":{"id":{"type":"string","description":"Shop ID, `gid://shopify/Shop/<id>`","example":"gid://shopify/Shop/1234567"},"createdAt":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Date the shop was created on Shopify, `YYYY-MM-DD` (no time)","example":"2021-03-15"},"name":{"example":"Example Shop","type":["string","null"]},"domain":{"description":"Primary domain","example":"example-shop.com","type":["string","null"]},"myshopifyDomain":{"type":"string","example":"example-shop.myshopify.com"},"countryCode":{"description":"ISO 3166-1 alpha-2","example":"US","type":["string","null"]},"city":{"type":["string","null"]},"region":{"description":"State or province","type":["string","null"]},"currency":{"description":"Shop base currency, ISO 4217","example":"USD","type":["string","null"]},"primaryLanguage":{"example":"en","type":["string","null"]},"category":{"anyOf":[{"type":"string","enum":["APPAREL","SHOES","JEWELRY_WATCHES","BAGS_ACCESSORIES","BEAUTY_PERSONAL_CARE","HEALTH_SUPPLEMENTS","SPORTS_FITNESS","HOME_DECOR","FURNITURE","KITCHEN_DINING","GARDEN_OUTDOOR","TOOLS_HARDWARE","FOOD_BEVERAGES","PETS","BABY_KIDS","TOYS_GAMES","ELECTRONICS","COMPUTERS_GAMING","BOOKS_MEDIA","ARTS_CRAFTS_COLLECTIBLES","OFFICE_STATIONERY","AUTOMOTIVE","BUSINESS_INDUSTRIAL","DIGITAL_PRODUCTS","GIFTS_PARTY","SMOKING_VAPING","ADULT","WEAPONS_HUNTING","MASS_MERCHANTS","OTHER"]},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["ACTIVE","PASSWORD","CLOSED","NOT_FOUND","UNKNOWN"]},{"type":"null"}]},"productsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"variantsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectionsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"estimatedMonthlyVisits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"estimatedMonthlySales":{"anyOf":[{"type":"object","properties":{"value":{"type":"string","description":"Decimal amount"},"currency":{"type":"string","const":"USD"}},"required":["value","currency"],"additionalProperties":false,"description":"Estimated monthly sales; null when there is no estimate"},{"type":"null"}]},"estimatedMonthlyAppSpend":{"anyOf":[{"type":"object","properties":{"value":{"type":"string","description":"Decimal amount"},"currency":{"type":"string","const":"USD"}},"required":["value","currency"],"additionalProperties":false,"description":"Estimated monthly spend on Shopify apps; null when there is no estimate"},{"type":"null"}]},"isShopifyPlus":{"description":"true: Shopify Plus; false: known not to be on Plus; null: no signal","type":["boolean","null"]}},"required":["id","createdAt","name","domain","myshopifyDomain","countryCode","city","region","currency","primaryLanguage","category","status","productsCount","variantsCount","collectionsCount","estimatedMonthlyVisits","estimatedMonthlySales","estimatedMonthlyAppSpend","isShopifyPlus"],"additionalProperties":false,"description":"A shop in a listing"},"ValidationError":{"type":"object","properties":{"error":{"type":"string","const":"Invalid request"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Dotted path of the invalid field, such as `limit` or `cursor`"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}}},"required":["error","issues"],"additionalProperties":false,"description":"A request parameter is invalid"},"Error":{"type":"object","properties":{"error":{"type":"string","description":"Human-readable error message"}},"required":["error"],"additionalProperties":false,"description":"Error body"},"Shop":{"type":"object","properties":{"id":{"type":"string","description":"Shop ID, `gid://shopify/Shop/<id>`","example":"gid://shopify/Shop/1234567"},"createdAt":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"Date the shop was created on Shopify, `YYYY-MM-DD` (no time)","example":"2021-03-15"},"name":{"example":"Example Shop","type":["string","null"]},"domain":{"description":"Primary domain","example":"example-shop.com","type":["string","null"]},"myshopifyDomain":{"type":"string","example":"example-shop.myshopify.com"},"countryCode":{"description":"ISO 3166-1 alpha-2","example":"US","type":["string","null"]},"city":{"type":["string","null"]},"region":{"description":"State or province","type":["string","null"]},"currency":{"description":"Shop base currency, ISO 4217","example":"USD","type":["string","null"]},"primaryLanguage":{"example":"en","type":["string","null"]},"category":{"anyOf":[{"type":"string","enum":["APPAREL","SHOES","JEWELRY_WATCHES","BAGS_ACCESSORIES","BEAUTY_PERSONAL_CARE","HEALTH_SUPPLEMENTS","SPORTS_FITNESS","HOME_DECOR","FURNITURE","KITCHEN_DINING","GARDEN_OUTDOOR","TOOLS_HARDWARE","FOOD_BEVERAGES","PETS","BABY_KIDS","TOYS_GAMES","ELECTRONICS","COMPUTERS_GAMING","BOOKS_MEDIA","ARTS_CRAFTS_COLLECTIBLES","OFFICE_STATIONERY","AUTOMOTIVE","BUSINESS_INDUSTRIAL","DIGITAL_PRODUCTS","GIFTS_PARTY","SMOKING_VAPING","ADULT","WEAPONS_HUNTING","MASS_MERCHANTS","OTHER"]},{"type":"null"}]},"status":{"anyOf":[{"type":"string","enum":["ACTIVE","PASSWORD","CLOSED","NOT_FOUND","UNKNOWN"]},{"type":"null"}]},"productsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"variantsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"collectionsCount":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"estimatedMonthlyVisits":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"estimatedMonthlySales":{"anyOf":[{"type":"object","properties":{"value":{"type":"string","description":"Decimal amount"},"currency":{"type":"string","const":"USD"}},"required":["value","currency"],"additionalProperties":false,"description":"Estimated monthly sales; null when there is no estimate"},{"type":"null"}]},"estimatedMonthlyAppSpend":{"anyOf":[{"type":"object","properties":{"value":{"type":"string","description":"Decimal amount"},"currency":{"type":"string","const":"USD"}},"required":["value","currency"],"additionalProperties":false,"description":"Estimated monthly spend on Shopify apps; null when there is no estimate"},{"type":"null"}]},"isShopifyPlus":{"description":"true: Shopify Plus; false: known not to be on Plus; null: no signal","type":["boolean","null"]},"languages":{"type":"array","items":{"type":"string"},"description":"Published languages"},"shopifyTheme":{"description":"Only for official Theme Store themes","type":["string","null"]},"emails":{"type":"array","items":{"type":"string"}},"phones":{"type":"array","items":{"type":"string"}},"similarShops":{"type":"array","items":{"type":"string"},"description":"Domains of the 5 to 10 shops most similar to this one; empty when not computed yet. Each works with `GET /shops/{domain}`","example":["another-example.com","example-store.co"]},"topProducts":{"type":"array","items":{"$ref":"#/components/schemas/TopProduct"},"description":"Best sellers, best first"},"productTypes":{"type":"array","items":{"$ref":"#/components/schemas/ProductType"},"description":"Product types, most products first"}},"required":["id","createdAt","name","domain","myshopifyDomain","countryCode","city","region","currency","primaryLanguage","category","status","productsCount","variantsCount","collectionsCount","estimatedMonthlyVisits","estimatedMonthlySales","estimatedMonthlyAppSpend","isShopifyPlus","languages","shopifyTheme","emails","phones","similarShops","topProducts","productTypes"],"additionalProperties":false,"description":"A shop with its best sellers and product types"},"TopProduct":{"type":"object","properties":{"id":{"description":"`gid://shopify/Product/<id>`; null for shops not re-enriched yet","type":["string","null"]},"rank":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"1 = best seller"},"title":{"type":"string"},"handle":{"type":"string"},"merchantProductType":{"description":"Product type as the merchant wrote it","type":["string","null"]},"taxonomyCategory":{"description":"Readable Shopify taxonomy path, such as `Apparel & Accessories > Clothing`. Categories come from the Shopify Product Taxonomy: https://raw.githubusercontent.com/Shopify/product-taxonomy/main/dist/en/categories.txt","type":["string","null"]},"shopUrl":{"type":["string","null"]},"featuredImage":{"type":["string","null"]},"price":{"description":"\"From\" price, decimal string","type":["string","null"]},"currency":{"type":["string","null"]}},"required":["id","rank","title","handle","merchantProductType","taxonomyCategory","shopUrl","featuredImage","price","currency"],"additionalProperties":false},"ProductType":{"type":"object","properties":{"merchantProductType":{"description":"Product type as the merchant wrote it","type":["string","null"]},"taxonomyCategory":{"description":"Shopify Product Taxonomy path, same as in `TopProduct`","type":["string","null"]},"productsCount":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["merchantProductType","taxonomyCategory","productsCount"],"additionalProperties":false},"ShopPending":{"type":"object","properties":{"status":{"type":"string","const":"pending"},"message":{"type":"string"},"retryAfter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"Seconds to wait before asking again (also sent as the Retry-After header)"}},"required":["status","message","retryAfter"],"additionalProperties":false,"description":"The shop is not indexed yet and has been queued for lookup"},"ShopAds":{"type":"object","properties":{"platforms":{"type":"object","properties":{"meta":{"anyOf":[{"$ref":"#/components/schemas/PlatformAds"},{"type":"null"}],"description":"Meta (Facebook, Instagram…)"},"google":{"anyOf":[{"$ref":"#/components/schemas/PlatformAds"},{"type":"null"}],"description":"Google Ads Transparency Center"},"tiktok":{"anyOf":[{"$ref":"#/components/schemas/PlatformAds"},{"type":"null"}],"description":"TikTok Ads Library"}},"required":["meta","google","tiktok"],"additionalProperties":false}},"required":["platforms"],"additionalProperties":false},"PlatformAds":{"type":"object","properties":{"advertiser":{"anyOf":[{"type":"object","properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}],"description":"Advertiser found on the platform; null when none matched"},"libraryUrl":{"description":"Link to all of the advertiser's ads in the platform's ad library","type":["string","null"]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Total ads as reported by the platform (approximate on Meta and Google); null when unknown"},"ads":{"type":"array","items":{"$ref":"#/components/schemas/Ad"},"description":"The 20 most recent ads (fewer if the advertiser has fewer), most recent first"}},"required":["advertiser","libraryUrl","total","ads"],"additionalProperties":false},"Ad":{"type":"object","properties":{"id":{"type":"string","description":"The platform's own ad ID"},"placements":{"type":"array","items":{"type":"string"},"description":"Where the ad is shown inside the platform (Meta only), lowercase: facebook, instagram…"},"format":{"description":"image, video or text","type":["string","null"]},"title":{"type":["string","null"]},"text":{"type":["string","null"]},"cta":{"type":["string","null"]},"imageUrl":{"type":["string","null"]},"videoUrl":{"type":["string","null"]},"landingUrl":{"type":["string","null"]},"libraryUrl":{"description":"Public link to this ad in the platform's ad library","type":["string","null"]},"isActive":{"type":["boolean","null"]},"firstShownAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"ISO 8601 date and time, UTC"},"lastShownAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"description":"ISO 8601 date and time, UTC"},"daysRunning":{"anyOf":[{"type":"integer","minimum":1,"maximum":9007199254740991},{"type":"null"}],"description":"Calendar days (UTC) the ad has run, counting the first and last day: from `firstShownAt` to `lastShownAt`, or to today for an active ad with no `lastShownAt`. Null when the dates are unknown"}},"required":["id","placements","format","title","text","cta","imageUrl","videoUrl","landingUrl","libraryUrl","isActive","firstShownAt","lastShownAt","daysRunning"],"additionalProperties":false},"PlatformAdsPage":{"type":"object","properties":{"advertiser":{"anyOf":[{"type":"object","properties":{"id":{"type":["string","null"]},"name":{"type":["string","null"]}},"required":["id","name"],"additionalProperties":false},{"type":"null"}],"description":"Advertiser found on the platform; null when none matched"},"libraryUrl":{"description":"Link to all of the advertiser's ads in the platform's ad library","type":["string","null"]},"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Total ads as reported by the platform (approximate on Meta and Google); null when unknown"},"ads":{"type":"array","items":{"$ref":"#/components/schemas/Ad"},"description":"A page of the advertiser's ads, most recent first where the platform allows it; the page size is the platform's"},"hasNextPage":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` to get the next page; null on the last page","type":["string","null"]}},"required":["advertiser","libraryUrl","total","ads","hasNextPage","nextCursor"],"additionalProperties":false},"ShopPeople":{"type":"object","properties":{"total":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}],"description":"Total people reported for the company; null when unknown"},"people":{"type":"array","items":{"$ref":"#/components/schemas/Person"}},"hasNextPage":{"type":"boolean"},"nextCursor":{"type":["string","null"]}},"required":["total","people","hasNextPage","nextCursor"],"additionalProperties":false},"Person":{"type":"object","properties":{"id":{"type":"string","description":"Person ID; use it to reveal their contact"},"firstName":{"type":["string","null"]},"lastName":{"description":"Masked until the contact is revealed, such as `Sm***h`","type":["string","null"]},"title":{"description":"Job title","type":["string","null"]},"hasEmail":{"description":"Whether an email is available to reveal","type":["boolean","null"]},"hasPhone":{"description":"Whether a direct phone is available to reveal; null when unknown","type":["boolean","null"]}},"required":["id","firstName","lastName","title","hasEmail","hasPhone"],"additionalProperties":false},"RevealedPerson":{"type":"object","properties":{"id":{"type":"string","description":"Person ID; use it to reveal their contact"},"firstName":{"type":["string","null"]},"lastName":{"description":"Masked until the contact is revealed, such as `Sm***h`","type":["string","null"]},"title":{"description":"Job title","type":["string","null"]},"hasEmail":{"description":"Whether an email is available to reveal","type":["boolean","null"]},"hasPhone":{"description":"Whether a direct phone is available to reveal; null when unknown","type":["boolean","null"]},"email":{"description":"Work email; null when the provider has none","type":["string","null"]},"phone":{"description":"Phone; only returned when asked for with `phone=true`, null otherwise or when not available","type":["string","null"]},"linkedinUrl":{"description":"LinkedIn profile URL; null when the provider has none","type":["string","null"]}},"required":["id","firstName","lastName","title","hasEmail","hasPhone","email","phone","linkedinUrl"],"additionalProperties":false},"MonitorList":{"type":"object","properties":{"monitors":{"type":"array","items":{"$ref":"#/components/schemas/Monitor"}},"hasNextPage":{"type":"boolean"},"nextCursor":{"description":"Pass as `cursor` to get the next page; null on the last page","type":["string","null"]}},"required":["monitors","hasNextPage","nextCursor"],"additionalProperties":false},"Monitor":{"type":"object","properties":{"id":{"type":"string","description":"Monitor ID (UUID)"},"name":{"type":["string","null"]},"webhookUrl":{"type":"string","description":"HTTPS URL that receives the webhooks","example":"https://example-app.com/webhooks/shoplens"},"topics":{"type":"array","items":{"type":"string","enum":["product.created","product.deleted","product.title_changed","product.description_changed","product.images_changed","product.price_changed","product.compare_at_price_changed","product.sale_started","product.sale_ended","product.out_of_stock","product.back_in_stock","variant.created","variant.deleted","collection.created"]},"description":"Changes watched"},"markets":{"type":"array","items":{"type":"string"},"description":"Countries (ISO 3166-1 alpha-2) where market-dependent topics are checked; empty: each shop's primary market only","example":["US","ES"]},"active":{"type":"boolean","description":"false: paused"},"shops":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"`gid://shopify/Shop/<id>`"},"name":{"type":["string","null"]},"domain":{"description":"Primary domain, without www.","type":["string","null"]},"myshopifyDomain":{"type":"string"}},"required":["id","name","domain","myshopifyDomain"],"additionalProperties":false},"description":"Shops watched, in the order they were added"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","name","webhookUrl","topics","markets","active","shops","createdAt","updatedAt"],"additionalProperties":false,"description":"A subscription to changes in a set of shops"},"MonitorWithSecret":{"type":"object","properties":{"id":{"type":"string","description":"Monitor ID (UUID)"},"name":{"type":["string","null"]},"webhookUrl":{"type":"string","description":"HTTPS URL that receives the webhooks","example":"https://example-app.com/webhooks/shoplens"},"topics":{"type":"array","items":{"type":"string","enum":["product.created","product.deleted","product.title_changed","product.description_changed","product.images_changed","product.price_changed","product.compare_at_price_changed","product.sale_started","product.sale_ended","product.out_of_stock","product.back_in_stock","variant.created","variant.deleted","collection.created"]},"description":"Changes watched"},"markets":{"type":"array","items":{"type":"string"},"description":"Countries (ISO 3166-1 alpha-2) where market-dependent topics are checked; empty: each shop's primary market only","example":["US","ES"]},"active":{"type":"boolean","description":"false: paused"},"shops":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"`gid://shopify/Shop/<id>`"},"name":{"type":["string","null"]},"domain":{"description":"Primary domain, without www.","type":["string","null"]},"myshopifyDomain":{"type":"string"}},"required":["id","name","domain","myshopifyDomain"],"additionalProperties":false},"description":"Shops watched, in the order they were added"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"secret":{"type":"string","description":"Key the webhooks of this monitor are signed with (HMAC-SHA256); keep it private","example":"whsec_MfKQ9r8GKYqrTwjUPD8ILPZIo2LaLaSw…"}},"required":["id","name","webhookUrl","topics","markets","active","shops","createdAt","updatedAt","secret"],"additionalProperties":false}}},"tags":[{"name":"Shops","description":"Search shops and read their details"},{"name":"Ads","description":"A shop's ads on Meta, Google and TikTok"},{"name":"People","description":"People at a shop's company and their contacts"},{"name":"Monitors","description":"Subscriptions to changes in shops, delivered as webhooks"}],"paths":{"/shops":{"get":{"operationId":"searchShops","tags":["Shops"],"summary":"Search shops","description":"Lists the shops Shoplens has indexed, filtered by text, country, category, status, Shopify Plus and inclusive ranges of visits, sales, products, variants or collections. With `sort`, shops are ordered by that metric or by `createdAt` (highest first by default) and shops with no value go last; without it the order is stable but arbitrary. Paginated with opaque cursors: while `hasNextPage` is true, pass `nextCursor` back as `cursor` with the same filters and sort. A cursor from a different sort is rejected with 400.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"A page of shops","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopList"}}}},"400":{"description":"A parameter is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"query","name":"q","schema":{"type":"string","minLength":1},"description":"Text to search in the shop name or domain; the domain works with or without https:// and www."},{"in":"query","name":"country","schema":{"type":"string","minLength":2,"maxLength":2},"description":"Shop country, ISO 3166-1 alpha-2 (ES, US...)"},{"in":"query","name":"category","schema":{"type":"string","enum":["APPAREL","SHOES","JEWELRY_WATCHES","BAGS_ACCESSORIES","BEAUTY_PERSONAL_CARE","HEALTH_SUPPLEMENTS","SPORTS_FITNESS","HOME_DECOR","FURNITURE","KITCHEN_DINING","GARDEN_OUTDOOR","TOOLS_HARDWARE","FOOD_BEVERAGES","PETS","BABY_KIDS","TOYS_GAMES","ELECTRONICS","COMPUTERS_GAMING","BOOKS_MEDIA","ARTS_CRAFTS_COLLECTIBLES","OFFICE_STATIONERY","AUTOMOTIVE","BUSINESS_INDUSTRIAL","DIGITAL_PRODUCTS","GIFTS_PARTY","SMOKING_VAPING","ADULT","WEAPONS_HUNTING","MASS_MERCHANTS","OTHER"]},"description":"Shop category"},{"in":"query","name":"status","schema":{"type":"string","enum":["ACTIVE","PASSWORD","CLOSED","NOT_FOUND","UNKNOWN"]},"description":"Shop status"},{"in":"query","name":"shopifyPlus","schema":{"type":["boolean","string"]},"description":"true: only Shopify Plus shops; false: only shops known not to be on Plus"},{"in":"query","name":"minEstimatedMonthlyVisits","schema":{"type":"number","minimum":0},"description":"Minimum estimated monthly visits (inclusive)"},{"in":"query","name":"maxEstimatedMonthlyVisits","schema":{"type":"number","minimum":0},"description":"Maximum estimated monthly visits (inclusive)"},{"in":"query","name":"minEstimatedMonthlySales","schema":{"type":"number","minimum":0},"description":"Minimum estimated monthly sales in USD (inclusive)"},{"in":"query","name":"maxEstimatedMonthlySales","schema":{"type":"number","minimum":0},"description":"Maximum estimated monthly sales in USD (inclusive)"},{"in":"query","name":"minProductsCount","schema":{"type":"number","minimum":0},"description":"Minimum number of products (inclusive)"},{"in":"query","name":"maxProductsCount","schema":{"type":"number","minimum":0},"description":"Maximum number of products (inclusive)"},{"in":"query","name":"minVariantsCount","schema":{"type":"number","minimum":0},"description":"Minimum number of product variants (inclusive)"},{"in":"query","name":"maxVariantsCount","schema":{"type":"number","minimum":0},"description":"Maximum number of product variants (inclusive)"},{"in":"query","name":"minCollectionsCount","schema":{"type":"number","minimum":0},"description":"Minimum number of collections (inclusive)"},{"in":"query","name":"maxCollectionsCount","schema":{"type":"number","minimum":0},"description":"Maximum number of collections (inclusive)"},{"in":"query","name":"minCreatedAt","schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"description":"Earliest shop creation date, `YYYY-MM-DD` (inclusive)"},{"in":"query","name":"maxCreatedAt","schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"description":"Latest shop creation date, `YYYY-MM-DD` (inclusive)"},{"in":"query","name":"sort","schema":{"type":"string","enum":["estimatedMonthlyVisits","estimatedMonthlySales","productsCount","variantsCount","collectionsCount","createdAt"]},"description":"Metric or `createdAt` (shop creation date) to sort by; shops without a value for it go last. Without sort, the order is stable but arbitrary"},{"in":"query","name":"order","schema":{"default":"desc","type":"string","enum":["desc","asc"]},"description":"Sort direction when `sort` is set: desc (highest first) or asc"},{"in":"query","name":"limit","schema":{"default":25,"type":"integer","minimum":1,"maximum":50},"description":"Number of results (1-50)"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"`nextCursor` from the previous response, as is"}]}},"/shops/{domain}":{"get":{"operationId":"getShop","tags":["Shops"],"summary":"Get a shop","description":"Returns a shop's details, best sellers and product types. A domain Shoplens has not indexed yet is queued for lookup and answered with `202` and a `Retry-After` header: ask again after that many seconds. The lookup verifies that the domain is a public Shopify store and enriches it, which takes a few minutes. A domain that turns out not to be a public Shopify store (not Shopify, password-protected or unreachable) answers 404 from then on.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The shop","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Shop"}}}},"202":{"description":"Not indexed yet; it is being looked up","headers":{"Retry-After":{"description":"Seconds to wait before retrying","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPending"}}}},"400":{"description":"A parameter is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No public Shopify store at this domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"Bare shop domain (example-shop.com): no https:// and no slashes; a leading www. is ignored and the .myshopify.com domain also works"}]}},"/shops/{domain}/ads":{"get":{"operationId":"getShopAds","tags":["Ads"],"summary":"Get a shop's ads","description":"Ads of a shop on Meta (Facebook, Instagram…), Google and TikTok: the advertiser found on each platform, the platform's total and the 20 most recent ads per platform. To browse every ad of one platform, use `GET /shops/{domain}/ads/{platform}`. A platform where no advertiser matched the shop has `advertiser` null, `total` 0 and no ads; one whose lookup failed has `total` null. Only works for shops Shoplens already has (it never queues a new one).","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Ads per platform","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopAds"}}}},"400":{"description":"A parameter is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No shop with this domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"Bare shop domain (example-shop.com): no https:// and no slashes; a leading www. is ignored and the .myshopify.com domain also works"}]}},"/shops/{domain}/ads/{platform}":{"get":{"operationId":"listShopPlatformAds","tags":["Ads"],"summary":"List all of a shop's ads on one platform","description":"Every ad of the shop's advertiser on one platform (`meta`, `google` or `tiktok`), active and inactive, paginated: while `hasNextPage` is true, pass `nextCursor` back as `cursor`. Pages are fetched from the platform on each request, so their size is the platform's (about 10 to 30 ads) and there is no `limit`. Ads come most recent first on Meta and in the platform's default order elsewhere. A platform where no advertiser matched the shop returns `advertiser` null and no ads. Filters are applied by the platform's library: Meta supports `startDate`, `endDate`, `format`, `country`, `status`, `language` and `sort`; Google supports `startDate`, `endDate`, `format`, `country` and `placement`; TikTok supports none. A filter the platform does not support answers 400. A cursor only works with the platform, advertiser and filters it was issued for. Only works for shops Shoplens already has.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"A page of ads","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlatformAdsPage"}}}},"400":{"description":"A parameter is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No shop with this domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The ads provider failed; try again later (the same cursor works)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"Bare shop domain (example-shop.com), without https://"},{"in":"path","name":"platform","schema":{"type":"string","enum":["meta","google","tiktok"]},"required":true,"description":"Ad platform: meta, google or tiktok"},{"in":"query","name":"startDate","schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"description":"Only ads shown on or after this date, `YYYY-MM-DD` (Meta, Google)"},{"in":"query","name":"endDate","schema":{"type":"string","format":"date","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"},"description":"Only ads shown on or before this date, `YYYY-MM-DD` (Meta, Google)"},{"in":"query","name":"format","schema":{"type":"string","enum":["image","video","text"]},"description":"Ad format: image, video or text (Meta, Google)"},{"in":"query","name":"country","schema":{"type":"string","minLength":2,"maxLength":2},"description":"Only ads shown in this country, ISO 3166-1 alpha-2 such as US (Meta, Google)"},{"in":"query","name":"status","schema":{"type":"string","enum":["all","active","inactive"]},"description":"all (default), active (still running) or inactive (stopped) (Meta)"},{"in":"query","name":"language","schema":{"type":"string","minLength":2,"maxLength":2},"description":"Ad language, ISO 639-1 such as en (Meta)"},{"in":"query","name":"placement","schema":{"type":"string","enum":["search","youtube","shopping","maps","play"]},"description":"Where the ad runs: search, youtube, shopping, maps or play (Google)"},{"in":"query","name":"sort","schema":{"type":"string","enum":["recent","impressions"]},"description":"recent (default, most recent first) or impressions (most impressions first) (Meta)"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"`nextCursor` from the previous response, as is; keep the same filters"}]}},"/shops/{domain}/people":{"get":{"operationId":"getShopPeople","tags":["People"],"summary":"List people at a shop","description":"People listed as working at the shop's company: first name, masked last name, job title, and whether an email or direct phone is available. Contacts are never included, not even for people already revealed: get them with the reveal endpoint, which returns stored contacts without a new lookup. Paginated: while `hasNextPage` is true, pass `nextCursor` back as `cursor`. Only works for shops Shoplens already has.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"A page of people","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShopPeople"}}}},"400":{"description":"A parameter is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No shop with this domain","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"Bare shop domain (example-shop.com): no https:// and no slashes; a leading www. is ignored and the .myshopify.com domain also works"},{"in":"query","name":"limit","schema":{"default":25,"type":"integer","minimum":1,"maximum":50},"description":"Number of results (1-50)"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"`nextCursor` from the previous response, as is"}]}},"/shops/{domain}/people/{id}/reveal":{"post":{"operationId":"revealShopPerson","tags":["People"],"summary":"Reveal a person's contact","description":"Reveals the work email and LinkedIn URL of one person from the people list, and optionally their phone. It is a deliberate action on a single person: call it only when a user asks for that person's contact, never in bulk. The contact is stored, so revealing the same person again returns it without a new lookup (asking for the phone later on a person revealed without it does one more lookup). The phone is often unavailable; when the people list says `hasPhone` is false, asking for it answers 422. If the phone lookup fails on a first reveal, the email and LinkedIn are revealed without it.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The person with their revealed contact","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevealedPerson"}}}},"400":{"description":"A parameter is invalid","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Shop or person not found, or the provider could not reveal this person","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"The person has no phone number (`hasPhone` is false); retry without `phone=true`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"The people provider failed; try again later","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"domain","schema":{"type":"string"},"required":true,"description":"Bare shop domain (example-shop.com), without https://"},{"in":"path","name":"id","schema":{"type":"string","minLength":1},"required":true,"description":"The person's `id` from the people list"},{"in":"query","name":"phone","schema":{"default":"false","type":"string","enum":["true","false"]},"description":"`true` to also reveal the phone number; without it the phone is never returned"}]}},"/monitors":{"get":{"operationId":"listMonitors","tags":["Monitors"],"summary":"List your monitors","description":"Your monitors, paginated: while `hasNextPage` is true, pass `nextCursor` back as `cursor`. Secrets are not included; get one monitor to see its secret.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"A page of monitors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorList"}}}},"400":{"description":"A parameter is invalid, or a shop is not one Shoplens has","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"query","name":"limit","schema":{"default":25,"type":"integer","minimum":1,"maximum":50},"description":"Number of results (1-50)"},{"in":"query","name":"cursor","schema":{"type":"string"},"description":"`nextCursor` from the previous response, as is"}]},"post":{"operationId":"createMonitor","tags":["Monitors"],"summary":"Create a monitor","description":"Subscribes to changes (`topics`) in up to 100 shops, delivered as webhooks to `webhookUrl`. Topics that depend on the market (product.created, product.deleted, product.price_changed, product.compare_at_price_changed, product.sale_started, product.sale_ended, product.out_of_stock, product.back_in_stock) are checked in each country of `markets`, or only in each shop's primary market when `markets` is empty. The other topics do not depend on the market. Several monitors watching the same shop share one check of it. Every shop must be one Shoplens already has: an unknown domain answers 400 with its position in `shops`; request it first with `GET /shops/{domain}`. The response includes the `secret` the webhooks are signed with.","security":[{"bearerAuth":[]}],"responses":{"201":{"description":"The new monitor, with its secret","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorWithSecret"}}}},"400":{"description":"A parameter is invalid, or a shop is not one Shoplens has","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Not enough credits for this call","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Name to recognise the monitor, up to 100 characters","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"webhookUrl":{"type":"string","maxLength":2048,"format":"uri","description":"HTTPS URL on a public domain (no IPs, localhost or internal names, no custom port or credentials) that receives the webhooks, such as https://example-app.com/webhooks/shoplens"},"topics":{"description":"Changes to watch, at least one: product.created, product.deleted, product.title_changed, product.description_changed, product.images_changed, product.price_changed, product.compare_at_price_changed, product.sale_started, product.sale_ended, product.out_of_stock, product.back_in_stock, variant.created, variant.deleted, collection.created","minItems":1,"type":"array","items":{"type":"string","enum":["product.created","product.deleted","product.title_changed","product.description_changed","product.images_changed","product.price_changed","product.compare_at_price_changed","product.sale_started","product.sale_ended","product.out_of_stock","product.back_in_stock","variant.created","variant.deleted","collection.created"]}},"markets":{"description":"Countries (ISO 3166-1 alpha-2, such as US or ES) where market-dependent topics are checked (product.created, product.deleted, product.price_changed, product.compare_at_price_changed, product.sale_started, product.sale_ended, product.out_of_stock, product.back_in_stock). Empty or omitted: only each shop's primary market. Up to 50","maxItems":50,"type":"array","items":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"shops":{"description":"Domains of the shops to watch (example-shop.com), 1 to 100. Each must be a shop Shoplens already has","minItems":1,"maxItems":100,"type":"array","items":{"type":"string"}},"active":{"default":true,"type":"boolean","description":"false pauses the monitor without deleting it"}},"required":["webhookUrl","topics","shops"]}}}}}},"/monitors/{id}":{"get":{"operationId":"getMonitor","tags":["Monitors"],"summary":"Get a monitor","description":"One of your monitors, with the `secret` its webhooks are signed with.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The monitor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorWithSecret"}}}},"400":{"description":"A parameter is invalid, or a shop is not one Shoplens has","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No monitor with this id among yours","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true,"description":"Monitor `id`"}]},"patch":{"operationId":"updateMonitor","tags":["Monitors"],"summary":"Update a monitor","description":"Changes the fields sent and keeps the rest. `topics`, `markets` and `shops` replace the whole list; `name: null` clears the name and `active: false` pauses the monitor. Topics that depend on the market (product.created, product.deleted, product.price_changed, product.compare_at_price_changed, product.sale_started, product.sale_ended, product.out_of_stock, product.back_in_stock) are checked in each country of `markets`, or only in each shop's primary market when `markets` is empty. The other topics do not depend on the market. Several monitors watching the same shop share one check of it.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The updated monitor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonitorWithSecret"}}}},"400":{"description":"A parameter is invalid, or a shop is not one Shoplens has","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No monitor with this id among yours","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true,"description":"Monitor `id`"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"description":"Name to recognise the monitor, up to 100 characters","anyOf":[{"type":"string","minLength":1,"maxLength":100},{"type":"null"}]},"webhookUrl":{"type":"string","maxLength":2048,"format":"uri","description":"HTTPS URL on a public domain (no IPs, localhost or internal names, no custom port or credentials) that receives the webhooks, such as https://example-app.com/webhooks/shoplens"},"topics":{"description":"Changes to watch, at least one: product.created, product.deleted, product.title_changed, product.description_changed, product.images_changed, product.price_changed, product.compare_at_price_changed, product.sale_started, product.sale_ended, product.out_of_stock, product.back_in_stock, variant.created, variant.deleted, collection.created","minItems":1,"type":"array","items":{"type":"string","enum":["product.created","product.deleted","product.title_changed","product.description_changed","product.images_changed","product.price_changed","product.compare_at_price_changed","product.sale_started","product.sale_ended","product.out_of_stock","product.back_in_stock","variant.created","variant.deleted","collection.created"]}},"markets":{"description":"Countries (ISO 3166-1 alpha-2, such as US or ES) where market-dependent topics are checked (product.created, product.deleted, product.price_changed, product.compare_at_price_changed, product.sale_started, product.sale_ended, product.out_of_stock, product.back_in_stock). Empty or omitted: only each shop's primary market. Up to 50","maxItems":50,"type":"array","items":{"type":"string","pattern":"^[A-Za-z]{2}$"}},"shops":{"description":"Domains of the shops to watch (example-shop.com), 1 to 100. Each must be a shop Shoplens already has","minItems":1,"maxItems":100,"type":"array","items":{"type":"string"}},"active":{"type":"boolean","description":"false pauses the monitor without deleting it"}}}}}}},"delete":{"operationId":"deleteMonitor","tags":["Monitors"],"summary":"Delete a monitor","description":"Deletes the monitor; no more webhooks are sent for it. To stop it for a while, set `active` to false instead.","security":[{"bearerAuth":[]}],"responses":{"204":{"description":"Deleted"},"400":{"description":"A parameter is invalid, or a shop is not one Shoplens has","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationError"}}}},"401":{"description":"Missing, invalid or revoked API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"No monitor with this id among yours","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Too many requests for your plan; wait the seconds in `Retry-After`","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"in":"path","name":"id","schema":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"required":true,"description":"Monitor `id`"}]}}}}