{"openapi":"3.1.0","info":{"title":"Shopify Storefront (BYOK) API","version":"0.1.0","description":"Shopify Storefront (BYOK) lets an AI assistant read your own Shopify Storefront data through the Shopify Storefront API with a key you supply (Storefront API access token (the public token of a headless channel or custom app, with unauthenticated read scopes)). Read-only: 12 tools (get_shop, list_products, get_product_by_handle, search_store, list_collections, get_collection_products, list_pages,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-shopify-storefront.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-shopify-storefront/docs"},"termsOfService":"https://connectorbay.com/byok-shopify-storefront/terms"},"servers":[{"url":"https://byok-shopify-storefront.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-shopify-storefront/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/get_shop":{"post":{"operationId":"get_shop","summary":"Show the store's name, description, primary domain, currency, accepted payment settings, countries it ships to and polic","description":"Show the store's name, description, primary domain, currency, accepted payment settings, countries it ships to and policy links. Use for \"What currency does this Shopify store sell in and where does it ship\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"}},"required":["shop"],"title":"get_shopArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_products":{"post":{"operationId":"list_products","summary":"List the store's published products with title, handle, vendor, type, tags, availability, price range and image; support","description":"List the store's published products with title, handle, vendor, type, tags, availability, price range and image; supports storefront search filters such as vendor:Acme or tag:summer. Use for \"Which products does this Shopify store sell by Acme\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Shopify storefront search syntax to filter results, for example 'vendor:Acme' or 'tag:summer available_for_sale:true'.","title":"Query"},"sort_key":{"anyOf":[{"enum":["BEST_SELLING","CREATED_AT","ID","PRICE","PRODUCT_TYPE","RELEVANCE","TITLE","UPDATED_AT","VENDOR"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by BEST_SELLING, CREATED_AT, ID, PRICE, PRODUCT_TYPE, RELEVANCE (only with a query), TITLE, UPDATED_AT or VENDOR.","title":"Sort Key"},"reverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to reverse the sort order.","title":"Reverse"}},"required":["shop"],"title":"list_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_product_by_handle":{"post":{"operationId":"get_product_by_handle","summary":"Get one published product by handle with description, options and up to 50 variants (title, SKU, price, compare-at price","description":"Get one published product by handle with description, options and up to 50 variants (title, SKU, price, compare-at price, availability, selected options). Use for \"What sizes and prices does the linen-shirt product come in\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"handle":{"description":"The handle (URL slug) of the item, for example 'linen-shirt'.","maxLength":255,"title":"Handle","type":"string"}},"required":["shop","handle"],"title":"get_product_by_handleArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/search_store":{"post":{"operationId":"search_store","summary":"Search the storefront for products, blog articles and pages by free text; returns type, title and handle of each hit and","description":"Search the storefront for products, blog articles and pages by free text; returns type, title and handle of each hit and the total hit count. Use for \"Search this Shopify store for 'linen'\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"query":{"description":"Free-text search terms, for example 'linen shirt'.","maxLength":200,"title":"Query","type":"string"},"first":{"anyOf":[{"maximum":50,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many items to return (1 to 50).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"}},"required":["shop","query"],"title":"search_storeArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_collections":{"post":{"operationId":"list_collections","summary":"List the store's collections with title, handle, description, image and last update; supports search filters such as tit","description":"List the store's collections with title, handle, description, image and last update; supports search filters such as title:summer. Use for \"What collections does this Shopify store have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Shopify storefront search syntax to filter results, for example 'title:summer'.","title":"Query"},"sort_key":{"anyOf":[{"enum":["ID","RELEVANCE","TITLE","UPDATED_AT"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by ID, RELEVANCE (only with a query), TITLE or UPDATED_AT.","title":"Sort Key"},"reverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to reverse the sort order.","title":"Reverse"}},"required":["shop"],"title":"list_collectionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_collection_products":{"post":{"operationId":"get_collection_products","summary":"Get one collection by handle with its products (title, handle, vendor, availability, minimum price), paged. Use for \"Whi","description":"Get one collection by handle with its products (title, handle, vendor, availability, minimum price), paged. Use for \"Which products are in the summer collection of this store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"handle":{"description":"The handle (URL slug) of the item, for example 'linen-shirt'.","maxLength":255,"title":"Handle","type":"string"},"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"},"sort_key":{"anyOf":[{"enum":["BEST_SELLING","COLLECTION_DEFAULT","CREATED","ID","MANUAL","PRICE","RELEVANCE","TITLE"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by BEST_SELLING, COLLECTION_DEFAULT, CREATED, ID, MANUAL, PRICE, RELEVANCE or TITLE.","title":"Sort Key"},"reverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to reverse the sort order.","title":"Reverse"}},"required":["shop","handle"],"title":"get_collection_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_pages":{"post":{"operationId":"list_pages","summary":"List the store's online-store pages (about, contact, size guide ...) with title, handle, summary and dates. Use for \"Wha","description":"List the store's online-store pages (about, contact, size guide ...) with title, handle, summary and dates. Use for \"What content pages does this Shopify store have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Shopify storefront search syntax to filter results, for example 'title:shipping'.","title":"Query"},"sort_key":{"anyOf":[{"enum":["ID","RELEVANCE","TITLE","UPDATED_AT"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by ID, RELEVANCE (only with a query), TITLE or UPDATED_AT.","title":"Sort Key"},"reverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to reverse the sort order.","title":"Reverse"}},"required":["shop"],"title":"list_pagesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_blogs":{"post":{"operationId":"list_blogs","summary":"List the store's blogs with title, handle and author names. Use for \"What blogs does this Shopify store run\".","description":"List the store's blogs with title, handle and author names. Use for \"What blogs does this Shopify store run\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Shopify storefront search syntax to filter results, for example 'handle:news'.","title":"Query"},"sort_key":{"anyOf":[{"enum":["HANDLE","ID","RELEVANCE","TITLE"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by HANDLE, ID, RELEVANCE (only with a query) or TITLE.","title":"Sort Key"},"reverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to reverse the sort order.","title":"Reverse"}},"required":["shop"],"title":"list_blogsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_articles":{"post":{"operationId":"list_articles","summary":"List blog articles across the store with title, handle, excerpt, tags, author name, blog and publish date; supports filt","description":"List blog articles across the store with title, handle, excerpt, tags, author name, blog and publish date; supports filters such as tag:launch. Use for \"What are the latest blog posts of this Shopify store\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 100).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"},"query":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Shopify storefront search syntax to filter results, for example 'tag:launch' or 'blog_title:News'.","title":"Query"},"sort_key":{"anyOf":[{"enum":["AUTHOR","BLOG_TITLE","ID","PUBLISHED_AT","RELEVANCE","TITLE","UPDATED_AT"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort by AUTHOR, BLOG_TITLE, ID, PUBLISHED_AT, RELEVANCE (only with a query), TITLE or UPDATED_AT.","title":"Sort Key"},"reverse":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to reverse the sort order.","title":"Reverse"}},"required":["shop"],"title":"list_articlesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_store_locations":{"post":{"operationId":"list_store_locations","summary":"List the store's physical locations that are visible on the storefront with name and address (street, city, region, post","description":"List the store's physical locations that are visible on the storefront with name and address (street, city, region, postcode, country, phone). Use for \"Where are this store's physical shops\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many items to return (1 to 250).","title":"First"},"after":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: pageInfo.endCursor from the previous answer. Leave out for the first page.","title":"After"}},"required":["shop"],"title":"list_store_locationsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_localization":{"post":{"operationId":"get_localization","summary":"Show the markets the storefront can serve: current country and language and the list of available countries (with curren","description":"Show the markets the storefront can serve: current country and language and the list of available countries (with currency) and languages. Use for \"Which countries and currencies does this Shopify store support\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"}},"required":["shop"],"title":"get_localizationArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_product_types_and_tags":{"post":{"operationId":"list_product_types_and_tags","summary":"List the distinct product types and product tags used in the store (up to 250 of each). Use for \"What product types and ","description":"List the distinct product types and product tags used in the store (up to 250 of each). Use for \"What product types and tags does this Shopify store use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"shop":{"description":"Your store's myshopify handle: the part before .myshopify.com, for example 'my-store' for my-store.myshopify.com.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Shop","type":"string"},"first":{"anyOf":[{"maximum":250,"minimum":1,"type":"integer"},{"type":"null"}],"default":100,"description":"How many items to return (1 to 250).","title":"First"}},"required":["shop"],"title":"list_product_types_and_tagsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}