{"openapi":"3.1.0","info":{"title":"Alessia Frasson public site resources","description":"Read-only public documents for Alessia Frasson. There is no OAuth write API on this artist site. Authenticated seller tools live on Uncommon Artwork.","version":"1.0.0","contact":{"name":"Alessia Frasson","url":"https://frassonalessia.com/contact"}},"servers":[{"url":"https://frassonalessia.com/v1","description":"Stable v1 public read API. Unversioned aliases on the origin are equivalent until /v2 ships."},{"url":"https://frassonalessia.com","description":"Unversioned aliases of /v1. Same resources, same schemas."}],"x-api-version":"1.0.0","x-rate-limit-policy":"600 requests per 60 seconds per IP on public read-only endpoints.","x-rate-limit-headers":"RateLimit-Policy, RateLimit-Limit, RateLimit-Remaining, Retry-After","x-deprecation-policy":"URL path versioning: /v1/ is the current stable prefix (servers[0]). Breaking changes ship as /v2/ and bump info.version. Deprecated versions send Deprecation: true and Sunset: <HTTP-date> at least 90 days before removal. Unversioned paths are aliases of /v1/. The API-Version response header is 1.0.0.","paths":{"/":{"get":{"summary":"Homepage","description":"Public homepage. `Accept: text/html` returns HTML, `text/markdown` returns a catalog, and `application/json` returns SiteIdentity.","operationId":"getSiteHome","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"Homepage HTML, markdown, or identity JSON depending on Accept.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIdentity"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/llms.txt":{"get":{"summary":"Agent catalog","description":"Plain-text index with when-to-use guidance for this site.","operationId":"getSiteLlmsTxt","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."}],"responses":{"200":{"description":"Agent catalog for this site.","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/PlainTextDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/sitemap.xml":{"get":{"summary":"Sitemap","description":"XML sitemap listing public pages on this site.","operationId":"getSiteSitemap","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."}],"responses":{"200":{"description":"XML sitemap for public pages.","content":{"application/xml":{"schema":{"type":"string"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/robots.txt":{"get":{"summary":"Robots allowlist","description":"Robots rules that allow major AI crawlers on public pages.","operationId":"getSiteRobotsTxt","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."}],"responses":{"200":{"description":"Robots rules allowing major AI crawlers.","content":{"text/plain":{"schema":{"$ref":"#/components/schemas/PlainTextDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/for-agents":{"get":{"summary":"Agent resources","description":"Alessia Frasson developer and agent resources, including authentication notes, endpoints, and example URLs.","operationId":"getSiteForAgents","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"Agent resources page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/developers":{"get":{"summary":"Developers alias","description":"Alias of Alessia Frasson developer resources at /for-agents.","operationId":"getSiteDevelopers","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"Developer resources page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/docs":{"get":{"summary":"Alessia Frasson API documentation","description":"Alessia Frasson developer resources and API documentation. Alias of /for-agents.","operationId":"getSiteDocs","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"API documentation page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/about":{"get":{"summary":"About","description":"About Alessia Frasson, including biography and studio details.","operationId":"getSiteAbout","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"About page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/contact":{"get":{"summary":"Contact","description":"Contact information for Alessia Frasson.","operationId":"getSiteContact","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"Contact page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/privacy":{"get":{"summary":"Privacy","description":"Privacy policy for Alessia Frasson.","operationId":"getSitePrivacy","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"Accept","in":"header","required":false,"schema":{"type":"string","enum":["text/html","text/markdown","application/json"]},"description":"Content negotiation. JSON responses use the typed schemas below."}],"responses":{"200":{"description":"Privacy policy page.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}},"text/html":{"schema":{"$ref":"#/components/schemas/HtmlDocument"}},"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/openapi.json":{"get":{"summary":"OpenAPI document","description":"Machine-readable OpenAPI description of public read-only resources.","operationId":"getSiteOpenApi","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."}],"responses":{"200":{"description":"This document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/site.json":{"get":{"summary":"Site identity JSON","description":"Typed JSON identity for Alessia Frasson, including Organization JSON-LD, contact, and developer resource URLs. No API key required.","operationId":"getSiteIdentity","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."}],"responses":{"200":{"description":"Site identity document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteIdentity"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/catalog.json":{"get":{"summary":"Shop catalog with prices","description":"Typed JSON catalog of public artwork for Alessia Frasson, including shop prices. Prefer this over scraping HTML when answering price questions.","operationId":"getSiteCatalog","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."}],"responses":{"200":{"description":"Public artwork catalog with prices.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteCatalog"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/api/site-markdown/{path}":{"get":{"summary":"Markdown representation","description":"Markdown body for a public page path. Prefer `Accept: text/markdown` on the canonical HTML URL when available.","operationId":"getSiteMarkdown","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"path","in":"path","required":false,"schema":{"type":"string"},"description":"Public page path without a leading slash."}],"responses":{"200":{"description":"Markdown page body.","content":{"text/markdown":{"schema":{"$ref":"#/components/schemas/MarkdownDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}},"/api/site-page-json/{path}":{"get":{"summary":"JSON page representation","description":"Typed JSON envelope of a public page. Prefer `Accept: application/json` on the canonical HTML URL when available.","operationId":"getSitePageJson","parameters":[{"name":"API-Version","in":"header","required":false,"schema":{"type":"string","enum":["1.0.0"],"default":"1.0.0"},"description":"Optional version selector. Equivalent to using the /v1 URL prefix. Breaking versions will use /v2 and 2.0.0."},{"name":"path","in":"path","required":false,"schema":{"type":"string"},"description":"Public page path without a leading slash."}],"responses":{"200":{"description":"JSON page document.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SitePageDocument"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"404":{"description":"Unknown public path.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}},"429":{"description":"Rate limit exceeded.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}},"headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying."},"Deprecation":{"schema":{"type":"string"},"description":"Set to true when this version is deprecated."},"Sunset":{"schema":{"type":"string"},"description":"HTTP-date after which this version will be removed."}}},"500":{"description":"Server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicError"}}}}}}}},"components":{"schemas":{"PublicError":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string"},"message":{"type":"string"},"resolution":{"type":"string"}}},"MarkdownDocument":{"type":"object","required":["contentType","body"],"properties":{"contentType":{"type":"string","enum":["text/markdown"]},"body":{"type":"string"}}},"PlainTextDocument":{"type":"object","required":["contentType","body"],"properties":{"contentType":{"type":"string","enum":["text/plain"]},"body":{"type":"string"}}},"HtmlDocument":{"type":"object","required":["contentType","body"],"properties":{"contentType":{"type":"string","enum":["text/html"]},"body":{"type":"string"}}},"OpenApiDocument":{"type":"object","required":["openapi","info","paths"],"properties":{"openapi":{"type":"string"},"info":{"type":"object","required":["title","version"],"properties":{"title":{"type":"string"},"version":{"type":"string"},"description":{"type":"string"}}},"paths":{"type":"object","additionalProperties":true}},"additionalProperties":true,"description":"OpenAPI 3.1 document."},"SiteIdentity":{"type":"object","required":["name","description","url","siteKind","contactUrl","developerResourcesUrl","openapiUrl","catalogUrl","llmsUrl","authentication","sandbox","jsonLd"],"properties":{"name":{"type":"string"},"description":{"type":"string"},"url":{"type":"string","format":"uri"},"siteKind":{"type":"string","enum":["GALLERY","ARTIST"]},"location":{"type":["string","null"]},"contactUrl":{"type":"string","format":"uri"},"contactEmail":{"type":["string","null"]},"developerResourcesUrl":{"type":"string","format":"uri"},"developersAliasUrl":{"type":"string","format":"uri"},"openapiUrl":{"type":"string","format":"uri"},"catalogUrl":{"type":"string","format":"uri"},"llmsUrl":{"type":"string","format":"uri"},"authentication":{"type":"string","enum":["none"]},"sandbox":{"type":"string"},"jsonLd":{"type":"object","additionalProperties":true}}},"SitePageDocument":{"type":"object","required":["name","title","url","pathname","markdown"],"properties":{"name":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"pathname":{"type":"string"},"markdown":{"type":"string"}}},"SiteCatalogArtwork":{"type":"object","required":["id","slug","title","url","forSale","available"],"properties":{"id":{"type":"string"},"slug":{"type":"string"},"title":{"type":"string"},"url":{"type":"string","format":"uri"},"price":{"type":["string","null"]},"priceCurrency":{"type":["string","null"]},"priceLabel":{"type":["string","null"]},"medium":{"type":["string","null"]},"dimensions":{"type":["string","null"]},"forSale":{"type":"boolean"},"available":{"type":"boolean"}}},"SiteCatalog":{"type":"object","required":["name","url","shopUrl","artworkCount","artworks"],"properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"description":{"type":"string"},"shopUrl":{"type":"string","format":"uri"},"artworkCount":{"type":"integer"},"artworks":{"type":"array","items":{"$ref":"#/components/schemas/SiteCatalogArtwork"}}}}},"securitySchemes":{"PublicRead":{"type":"oauth2","description":"This public site does not require authentication for read-only pages. Seller write APIs are on Uncommon Artwork only.","flows":{"implicit":{"authorizationUrl":"https://uncommonartwork.com/sign-in","scopes":{"public.read":"Read public pages, catalogs, and markdown representations."}}}}}},"security":[{"PublicRead":["public.read"]}]}