{"openapi":"3.1.0","info":{"title":"Real Estate Schema API","version":"1","summary":"Compile real estate JSON-LD and check it against schema.org.","description":"Compile schema.org JSON-LD for real estate pages from a profile and a recipe input, and conformance-check any JSON-LD or page against a pinned schema.org release. Every response carries `X-Engine-Version` (currently 0.4.0) and, in the body, `engineVersion`: the same input can produce different output when that changes. The API is not open to browsers on other origins and has no API keys yet; requests from servers and scripts work. Checking a URL is limited per network address (`429`, `rate_limited`, with `Retry-After`). The host also rate-limits every request by network address and answers 429 outside this API's JSON.","license":{"name":"Terms of use","url":"https://www.realestateschema.com/terms"}},"servers":[{"url":"https://www.realestateschema.com"}],"tags":[{"name":"Create","description":"Compile a recipe to a conformant `@graph`."},{"name":"Check","description":"Lint JSON-LD, a page, or a live-DOM capture."}],"paths":{"/api/v1/recipes/agent":{"post":{"operationId":"compile_agent","tags":["Create"],"summary":"Compile: Agent / Team Profile","description":"A profile page for one agent or team member: credentials, memberships, areas of expertise and the brokerage they work for.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["profile","input"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"input":{"$ref":"#/components/schemas/AgentRecipeInput"},"options":{"$ref":"#/components/schemas/RecipeOptions"}}}}}},"responses":{"200":{"description":"The compiled JSON-LD and its lint report.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileResponse"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}},"/api/v1/recipes/article":{"post":{"operationId":"compile_article","tags":["Create"],"summary":"Compile: Market Report / Article","description":"A market report or real estate article, with the licensed agent as author and the brokerage as publisher.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["profile","input"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"input":{"$ref":"#/components/schemas/ArticleRecipeInput"},"options":{"$ref":"#/components/schemas/RecipeOptions"}}}}}},"responses":{"200":{"description":"The compiled JSON-LD and its lint report.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileResponse"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}},"/api/v1/recipes/neighborhood":{"post":{"operationId":"compile_neighborhood","tags":["Create"],"summary":"Compile: Neighborhood & Community Guide","description":"A neighborhood or community guide that ties the place, its municipality and the agent's local expertise to the page.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["profile","input"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"input":{"$ref":"#/components/schemas/NeighborhoodRecipeInput"},"options":{"$ref":"#/components/schemas/RecipeOptions"}}}}}},"responses":{"200":{"description":"The compiled JSON-LD and its lint report.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileResponse"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}},"/api/v1/recipes/faq":{"post":{"operationId":"compile_faq","tags":["Create"],"summary":"Compile: Comparison / AEO FAQ","description":"A buyer-question or comparison page, structured as an FAQ with an optional comparison list.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["profile","input"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"input":{"$ref":"#/components/schemas/FaqRecipeInput"},"options":{"$ref":"#/components/schemas/RecipeOptions"}}}}}},"responses":{"200":{"description":"The compiled JSON-LD and its lint report.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileResponse"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}},"/api/v1/recipes/open-house":{"post":{"operationId":"compile_open_house","tags":["Create"],"summary":"Compile: Open House","description":"An open house, compiled to an Event with the property as its location and the agent as organizer.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["profile","input"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"input":{"$ref":"#/components/schemas/OpenHouseRecipeInput"},"options":{"$ref":"#/components/schemas/RecipeOptions"}}}}}},"responses":{"200":{"description":"The compiled JSON-LD and its lint report.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileResponse"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}},"/api/v1/recipes/help-article":{"post":{"operationId":"compile_help_article","tags":["Create"],"summary":"Compile: Help Center / Knowledge Base Article","description":"A help-center article from a provider that serves real-estate professionals, with optional step-by-step procedures.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["profile","input"],"properties":{"profile":{"$ref":"#/components/schemas/Profile"},"input":{"$ref":"#/components/schemas/HelpArticleRecipeInput"},"options":{"$ref":"#/components/schemas/RecipeOptions"}}}}}},"responses":{"200":{"description":"The compiled JSON-LD and its lint report.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompileResponse"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}},"/api/v1/validate":{"post":{"operationId":"validate","tags":["Check"],"summary":"Check JSON-LD, a URL, or a live-DOM capture","description":"Send one of: `{ jsonLd }` (a string or an object), `{ url }` (the page is fetched here, honouring robots.txt, with the bot described at /bot), or `{ url, domBlocks, staticBlocks? }` (a capture of the rendered page). Expected failures such as a page that cannot be fetched or JSON-LD that does not parse come back as a 200 result with `notes` and `fetchError`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditRequest"}}}},"responses":{"200":{"description":"The lint report for every JSON-LD document found.","headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuditResult"}}}},"400":{"description":"The request was rejected. `error.code` is `invalid_request` (with `error.issues`) or `invalid_json`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"413":{"description":"The body is over 1 MB. `error.code` is `payload_too_large`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"415":{"description":"The body was not sent as `application/json`. `error.code` is `unsupported_media_type`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"429":{"description":"A page check was refused because this network has used its fetches or the server is busy. `error.code` is `rate_limited`; `Retry-After` says how many seconds to wait. Going over again soon after waits longer each time (1 minute, doubling up to an hour). Pasted JSON-LD is not counted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}},"500":{"description":"An internal fault. `error.code` is `internal_error`; nothing else is revealed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"X-Engine-Version":{"$ref":"#/components/headers/EngineVersionHeader"}}}}}}},"components":{"headers":{"EngineVersionHeader":{"description":"The engine release that handled the request.","schema":{"type":"string","examples":["0.4.0"]}}},"schemas":{"Profile":{"type":"object","properties":{"version":{"type":"string","const":"1.1","default":"1.1","description":"Profile format version. Always \"1.1\"."},"id":{"type":"string","minLength":1,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Kebab-case identifier used for storage."},"name":{"type":"string","minLength":1,"description":"Internal label shown in the profile picker."},"jurisdiction":{"type":"string","minLength":1,"description":"Licensing jurisdiction, e.g. \"US-FL\". Drives wizard prefill and normalization."},"organization":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The public-facing entity: a brokerage, a team, or a solo agent's brand."},"kind":{"type":"string","enum":["brokerage","provider"],"default":"brokerage","description":"`brokerage` (default): a brokerage, team or solo brand, compiled to RealEstateAgent. `provider`: serves real-estate professionals without being a brokerage (software vendor, coach, trainer), compiled to Organization."},"offering":{"type":"array","items":{"type":"string","enum":["software","coaching","services"]},"default":[],"description":"`provider` only: what it offers. Drives the profile wizard, not compiled output."},"audience":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Who the content is for, e.g. \"Real estate agents\". Compiled to `audience` on provider content and products."},"products":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Kebab-case slug that identifies the product; a recipe's `product` input refers to it."},"name":{"type":"string","minLength":1,"description":"Product or program name."},"type":{"type":"string","enum":["SoftwareApplication","Service","Course"],"default":"SoftwareApplication","description":"schema.org type of the product node. Defaults to SoftwareApplication."},"url":{"type":"string","format":"uri","description":"The product's page."},"applicationCategory":{"type":"string","minLength":1,"description":"SoftwareApplication only: the category, e.g. \"BusinessApplication\"."},"sameAs":{"type":"array","items":{"type":"string","format":"uri"},"default":[],"description":"Verified profiles of the product elsewhere."}},"required":["slug","name"],"additionalProperties":false},"default":[],"description":"`provider` only: products and programs, addressable by slug."},"legalName":{"type":"string","minLength":1,"description":"Registered legal name, if different from `name`."},"url":{"type":"string","format":"uri","description":"The organization's website. Anchors its `@id`."},"logo":{"type":"string","format":"uri","description":"Logo image URL."},"telephone":{"type":"string","pattern":"^[+()\\-.\\s\\d]{7,}$","description":"Main phone number; rewritten to E.164 on save."},"email":{"type":"string","format":"email","description":"Public contact email."},"address":{"type":"object","properties":{"streetAddress":{"type":"string","minLength":1,"description":"Street line, e.g. \"1200 Loma Vista Dr\"."},"addressLocality":{"type":"string","minLength":1,"description":"City or town."},"addressRegion":{"type":"string","minLength":1,"description":"State or province code, e.g. \"CA\"."},"postalCode":{"type":"string","minLength":1,"description":"ZIP or postal code."},"addressCountry":{"type":"string","minLength":1,"default":"US","description":"ISO 3166-1 alpha-2 country code. Defaults to US."}},"required":["streetAddress","addressLocality","addressRegion","postalCode"],"additionalProperties":false,"description":"Office address."},"soloBrand":{"type":"boolean","default":false,"description":"True when `name` is one agent's marketing brand or DBA rather than a real team or brokerage. Only meaningful with `brokerageOfRecord`: the agent then works for the brokerage of record."},"brokerageOfRecord":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the licensed brokerage."},"legalName":{"type":"string","minLength":1,"description":"Registered legal name, if different."},"url":{"type":"string","format":"uri","description":"The brokerage's website."},"address":{"type":"object","properties":{"streetAddress":{"type":"string","minLength":1,"description":"Street line, e.g. \"1200 Loma Vista Dr\"."},"addressLocality":{"type":"string","minLength":1,"description":"City or town."},"addressRegion":{"type":"string","minLength":1,"description":"State or province code, e.g. \"CA\"."},"postalCode":{"type":"string","minLength":1,"description":"ZIP or postal code."},"addressCountry":{"type":"string","minLength":1,"default":"US","description":"ISO 3166-1 alpha-2 country code. Defaults to US."}},"required":["streetAddress","addressLocality","addressRegion","postalCode"],"additionalProperties":false,"description":"The brokerage's office address."},"credentials":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1,"description":"What kind of credential this is, e.g. \"State Real Estate License\"."},"identifier":{"type":"string","minLength":1,"description":"The credential identifier as displayed, e.g. \"CA DRE #01928374\"."},"authority":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Issuing authority, e.g. \"California Department of Real Estate\"."},"url":{"type":"string","format":"uri","description":"The authority's website."},"type":{"type":"string","enum":["GovernmentOrganization","Organization","EducationalOrganization"],"default":"GovernmentOrganization","description":"schema.org type of the authority node. Defaults to GovernmentOrganization."}},"required":["name"],"additionalProperties":false,"description":"Who issued the credential."}},"required":["category","identifier","authority"],"additionalProperties":false},"default":[],"description":"The brokerage's entity license(s), e.g. a Florida CQ or BO license."}},"required":["name"],"additionalProperties":false,"description":"The licensed brokerage above this entity, when this is a team or solo brand operating under someone else's license."},"franchise":{"type":"string","minLength":1,"description":"Franchise brand name only, e.g. \"RE/MAX\". Carries no license."},"parentOrganization":{"type":"string","minLength":1,"description":"Deprecated: use `franchise` or `brokerageOfRecord`. Treated as `franchise`."},"credentials":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1,"description":"What kind of credential this is, e.g. \"State Real Estate License\"."},"identifier":{"type":"string","minLength":1,"description":"The credential identifier as displayed, e.g. \"CA DRE #01928374\"."},"authority":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Issuing authority, e.g. \"California Department of Real Estate\"."},"url":{"type":"string","format":"uri","description":"The authority's website."},"type":{"type":"string","enum":["GovernmentOrganization","Organization","EducationalOrganization"],"default":"GovernmentOrganization","description":"schema.org type of the authority node. Defaults to GovernmentOrganization."}},"required":["name"],"additionalProperties":false,"description":"Who issued the credential."}},"required":["category","identifier","authority"],"additionalProperties":false},"default":[],"description":"This entity's own real-estate license(s). Empty for a solo brand."},"sameAs":{"type":"array","items":{"type":"string","format":"uri"},"default":[],"description":"Verified profiles: LinkedIn company page, Google Business Profile, etc."},"areaServed":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Municipalities or regions the entity serves."}},"required":["name","url"],"additionalProperties":false,"description":"The public-facing entity every recipe publishes under."},"primaryAgent":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Kebab-case slug that identifies the agent, e.g. \"jane-doe\". A recipe's `agentSlug` input refers to it."},"name":{"type":"string","minLength":1,"description":"The agent's full name."},"jobTitle":{"type":"string","minLength":1,"description":"Professional title, e.g. \"Senior Luxury Estates Advisor\"."},"url":{"type":"string","format":"uri","description":"The agent's profile page."},"image":{"type":"string","format":"uri","description":"Headshot image URL."},"telephone":{"type":"string","pattern":"^[+()\\-.\\s\\d]{7,}$","description":"Direct phone number; rewritten to E.164 on save."},"email":{"type":"string","format":"email","description":"Public contact email."},"credentials":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1,"description":"What kind of credential this is, e.g. \"State Real Estate License\"."},"identifier":{"type":"string","minLength":1,"description":"The credential identifier as displayed, e.g. \"CA DRE #01928374\"."},"authority":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Issuing authority, e.g. \"California Department of Real Estate\"."},"url":{"type":"string","format":"uri","description":"The authority's website."},"type":{"type":"string","enum":["GovernmentOrganization","Organization","EducationalOrganization"],"default":"GovernmentOrganization","description":"schema.org type of the authority node. Defaults to GovernmentOrganization."}},"required":["name"],"additionalProperties":false,"description":"Who issued the credential."}},"required":["category","identifier","authority"],"additionalProperties":false},"default":[],"description":"The agent's licenses and designations."},"memberships":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Association name, e.g. \"National Association of REALTORS\"."},"identifier":{"type":"string","minLength":1,"description":"Membership number as displayed, e.g. \"NRDS #99281720\"."}},"required":["name"],"additionalProperties":false},"default":[],"description":"NAR and board memberships."},"sameAs":{"type":"array","items":{"type":"string","format":"uri"},"default":[],"description":"Verified profiles: Zillow, Realtor.com, LinkedIn, Instagram."},"knowsAbout":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Topical competencies, compiled to `knowsAbout`."},"serviceAreas":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Area name, e.g. \"Pasadena\"."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies the area."}},"required":["name"],"additionalProperties":false},"default":[],"description":"Geographic areas of expertise, compiled to `knowsAbout`."}},"required":["slug","name"],"additionalProperties":false,"description":"The default agent for single-agent recipes. Required unless `organization.kind` is `provider`."},"agents":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","minLength":1,"pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$","description":"Kebab-case slug that identifies the agent, e.g. \"jane-doe\". A recipe's `agentSlug` input refers to it."},"name":{"type":"string","minLength":1,"description":"The agent's full name."},"jobTitle":{"type":"string","minLength":1,"description":"Professional title, e.g. \"Senior Luxury Estates Advisor\"."},"url":{"type":"string","format":"uri","description":"The agent's profile page."},"image":{"type":"string","format":"uri","description":"Headshot image URL."},"telephone":{"type":"string","pattern":"^[+()\\-.\\s\\d]{7,}$","description":"Direct phone number; rewritten to E.164 on save."},"email":{"type":"string","format":"email","description":"Public contact email."},"credentials":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","minLength":1,"description":"What kind of credential this is, e.g. \"State Real Estate License\"."},"identifier":{"type":"string","minLength":1,"description":"The credential identifier as displayed, e.g. \"CA DRE #01928374\"."},"authority":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Issuing authority, e.g. \"California Department of Real Estate\"."},"url":{"type":"string","format":"uri","description":"The authority's website."},"type":{"type":"string","enum":["GovernmentOrganization","Organization","EducationalOrganization"],"default":"GovernmentOrganization","description":"schema.org type of the authority node. Defaults to GovernmentOrganization."}},"required":["name"],"additionalProperties":false,"description":"Who issued the credential."}},"required":["category","identifier","authority"],"additionalProperties":false},"default":[],"description":"The agent's licenses and designations."},"memberships":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Association name, e.g. \"National Association of REALTORS\"."},"identifier":{"type":"string","minLength":1,"description":"Membership number as displayed, e.g. \"NRDS #99281720\"."}},"required":["name"],"additionalProperties":false},"default":[],"description":"NAR and board memberships."},"sameAs":{"type":"array","items":{"type":"string","format":"uri"},"default":[],"description":"Verified profiles: Zillow, Realtor.com, LinkedIn, Instagram."},"knowsAbout":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Topical competencies, compiled to `knowsAbout`."},"serviceAreas":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Area name, e.g. \"Pasadena\"."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies the area."}},"required":["name"],"additionalProperties":false},"default":[],"description":"Geographic areas of expertise, compiled to `knowsAbout`."}},"required":["slug","name"],"additionalProperties":false},"default":[],"description":"Additional team members, addressable by `slug`."},"mls":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"MLS name, e.g. \"California Regional Multiple Listing Service (CRMLS)\"."},"disclaimerTemplate":{"type":"string","minLength":1,"description":"Disclaimer text. Supports the placeholders {{mls_name}}, {{mls_id}} and {{brokerage_name}}."}},"required":["name","disclaimerTemplate"],"additionalProperties":false,"description":"MLS name and disclaimer defaults."},"updatedAt":{"type":"string","format":"date-time","description":"ISO 8601 timestamp, set on save."}},"required":["id","name","organization"],"additionalProperties":false},"RecipeOptions":{"type":"object","properties":{"outputMode":{"type":"string","enum":["standalone","plugin-stitching"],"default":"standalone","description":"`standalone`: a complete graph with its own WebSite root. `plugin-stitching`: only the domain nodes, referencing the host CMS's nodes by `@id`."},"hostWebPageId":{"type":"string","format":"uri","description":"`plugin-stitching`: the `@id` of the host page node to attach the primary entity to."},"hostOrganizationId":{"type":"string","format":"uri","description":"`plugin-stitching`: the `@id` of the host organization node to reference instead of emitting a brokerage."},"hostWebSiteId":{"type":"string","format":"uri","description":"`plugin-stitching`: the `@id` of the host website node, when the primary entity should declare `isPartOf`."}},"additionalProperties":false,"default":{"outputMode":"standalone"}},"AuditRequest":{"type":"object","properties":{"jsonLd":{"anyOf":[{"type":"string"},{"type":"object","additionalProperties":{}},{"type":"array","items":{}}],"description":"JSON-LD to check: a JSON string, one object, or an array of objects."},"url":{"type":"string","format":"uri","description":"A page to fetch and check. With `domBlocks`, the page they were read from."},"domBlocks":{"type":"array","items":{},"maxItems":1000,"description":"JSON-LD blocks read from the rendered page (the live DOM). Needs `url`."},"staticBlocks":{"type":"array","items":{},"maxItems":100,"description":"With `domBlocks`: the page's HTML-source JSON-LD blocks, when the caller already has them. Omit it and the server fetches `url`. An empty array means the HTML source has no JSON-LD."}},"additionalProperties":false},"AgentRecipeInput":{"type":"object","properties":{"pageUrl":{"type":"string","format":"uri","description":"The agent's profile page. Becomes the page node's `@id`."},"agentSlug":{"type":"string","description":"Which agent from the profile; defaults to `primaryAgent`. Must match an agent's `slug`."},"headline":{"type":"string","minLength":1,"description":"`ProfilePage` name. Defaults to \"<name> — <jobTitle> — <org>\"."}},"required":["pageUrl"],"additionalProperties":false},"ArticleRecipeInput":{"type":"object","properties":{"pageUrl":{"type":"string","format":"uri","description":"The article's page. Becomes the article node's `@id`."},"agentSlug":{"type":"string","description":"Which agent from the profile; defaults to `primaryAgent`. Must match an agent's `slug`."},"headline":{"type":"string","minLength":1,"description":"The article's headline."},"description":{"type":"string","minLength":1,"description":"One- or two-sentence summary of the article."},"datePublished":{"type":"string","format":"date-time","description":"ISO 8601 date-time with a UTC offset, e.g. \"2026-03-02T09:00:00-05:00\"."},"dateModified":{"type":"string","format":"date-time","description":"ISO 8601 date-time with a UTC offset. Defaults to `datePublished`."},"image":{"type":"string","format":"uri","description":"The article's lead image."},"about":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The topic's name."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies the topic."},"type":{"type":"string","enum":["Thing","Place","City","AdministrativeArea","Event","Organization"],"default":"Thing","description":"schema.org type of the topic. Defaults to Thing."}},"required":["name"],"additionalProperties":false},"default":[],"description":"Topics the article is about, grounded through `sameAs`."}},"required":["pageUrl","headline","description","datePublished"],"additionalProperties":false},"NeighborhoodRecipeInput":{"type":"object","properties":{"pageUrl":{"type":"string","format":"uri","description":"The guide's page. Becomes the guide node's `@id`."},"agentSlug":{"type":"string","description":"Which agent from the profile; defaults to `primaryAgent`. Must match an agent's `slug`."},"headline":{"type":"string","minLength":1,"description":"The guide's headline."},"description":{"type":"string","minLength":1,"description":"One- or two-sentence summary of the guide."},"inLanguage":{"type":"string","minLength":2,"default":"en-US","description":"BCP 47 language tag of the guide. Defaults to \"en-US\"."},"place":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The neighborhood's name, e.g. \"Bayview Heights\"."},"description":{"type":"string","minLength":1,"description":"A sentence about the place."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies the place."},"containedInPlace":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The municipality it sits in, e.g. \"Tampa\"."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies it."},"type":{"type":"string","enum":["City","AdministrativeArea","State"],"default":"City","description":"schema.org type of the containing place. Defaults to City."}},"required":["name"],"additionalProperties":false,"description":"The municipality the neighborhood is nested in."},"geo":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude in decimal degrees."},"longitude":{"type":"number","description":"Longitude in decimal degrees."}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Coordinates of the neighborhood's center."},"amenities":{"type":"array","items":{"type":"string","minLength":1},"default":[],"description":"Amenities worth naming, such as parks and schools."}},"required":["name","containedInPlace"],"additionalProperties":false,"description":"The neighborhood the guide covers."}},"required":["pageUrl","headline","description","place"],"additionalProperties":false},"FaqRecipeInput":{"type":"object","properties":{"pageUrl":{"type":"string","format":"uri","description":"The FAQ page. Becomes the page node's `@id`."},"agentSlug":{"type":"string","description":"Which agent from the profile; defaults to `primaryAgent`. Must match an agent's `slug`."},"name":{"type":"string","minLength":1,"description":"The page's title."},"description":{"type":"string","minLength":1,"description":"One- or two-sentence summary of the page."},"questions":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string","minLength":1,"description":"The question, as a reader would ask it."},"answer":{"type":"string","minLength":1,"description":"The answer, in plain text."}},"required":["question","answer"],"additionalProperties":false},"minItems":1,"description":"The questions and answers on the page. At least one."},"comparison":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"What is being compared."},"items":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"description":"The options being compared, in the order shown."}},"required":["name","items"],"additionalProperties":false,"description":"An optional comparison list the page is about."}},"required":["pageUrl","name","description","questions"],"additionalProperties":false},"OpenHouseRecipeInput":{"type":"object","properties":{"pageUrl":{"type":"string","format":"uri","description":"The open house's page. Becomes the page node's `@id`."},"agentSlug":{"type":"string","description":"The hosting agent; defaults to `primaryAgent`. Must match an agent's `slug`."},"name":{"type":"string","minLength":1,"description":"The event's name. Defaults to \"Open House: <street address>\"."},"description":{"type":"string","minLength":1,"description":"A sentence about the event."},"image":{"type":"string","format":"uri","description":"A photo of the property."},"propertyType":{"type":"string","enum":["SingleFamilyResidence","Apartment","House"],"default":"SingleFamilyResidence","description":"schema.org type of the property. Defaults to SingleFamilyResidence."},"address":{"type":"object","properties":{"streetAddress":{"type":"string","minLength":1,"description":"Street line, e.g. \"1200 Loma Vista Dr\"."},"addressLocality":{"type":"string","minLength":1,"description":"City or town."},"addressRegion":{"type":"string","minLength":1,"description":"State or province code, e.g. \"CA\"."},"postalCode":{"type":"string","minLength":1,"description":"ZIP or postal code."},"addressCountry":{"type":"string","minLength":1,"default":"US","description":"ISO 3166-1 alpha-2 country code. Defaults to US."}},"required":["streetAddress","addressLocality","addressRegion","postalCode"],"additionalProperties":false,"description":"The property's address."},"locationName":{"type":"string","minLength":1,"description":"The place's name, which Google requires on `location`. Defaults to the street address."},"geo":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude in decimal degrees."},"longitude":{"type":"number","description":"Longitude in decimal degrees."}},"required":["latitude","longitude"],"additionalProperties":false,"description":"Coordinates of the property."},"date":{"type":"string","minLength":1,"description":"Local date, \"YYYY-MM-DD\"."},"startTime":{"type":"string","minLength":1,"description":"Local start time, \"HH:MM\" (24-hour)."},"endTime":{"type":"string","minLength":1,"description":"Local end time, \"HH:MM\" (24-hour). Must be after `startTime`."},"timeZone":{"type":"string","minLength":1,"description":"IANA time zone, e.g. \"America/New_York\". Derives the UTC offset on `startDate` and `endDate`."},"status":{"type":"string","enum":["EventScheduled","EventCancelled","EventPostponed","EventRescheduled"],"default":"EventScheduled","description":"Event status. Defaults to EventScheduled."},"listingUrl":{"type":"string","format":"uri","description":"The property's listing page, referenced by URL only."},"isAccessibleForFree":{"type":"boolean","default":true,"description":"Whether attending is free. Defaults to true, which also adds a $0 offer."},"maximumAttendeeCapacity":{"type":"integer","exclusiveMinimum":0,"description":"Most people the event can hold."}},"required":["pageUrl","address","date","startTime","endTime","timeZone"],"additionalProperties":false},"HelpArticleRecipeInput":{"type":"object","properties":{"pageUrl":{"type":"string","format":"uri","description":"The article's page. Becomes the article node's `@id`."},"headline":{"type":"string","minLength":1,"description":"The article's headline."},"description":{"type":"string","minLength":1,"description":"One- or two-sentence summary of the article."},"datePublished":{"type":"string","format":"date-time","description":"ISO 8601 date-time with a UTC offset, e.g. \"2026-03-02T09:00:00-05:00\"."},"dateModified":{"type":"string","format":"date-time","description":"ISO 8601 date-time with a UTC offset. Defaults to `datePublished`."},"image":{"type":"string","format":"uri","description":"The article's lead image."},"siteName":{"type":"string","minLength":1,"description":"Name of the help-center site when it lives on its own host, e.g. help.example.com. Defaults to the organization name."},"articleSection":{"type":"string","minLength":1,"description":"Help-center category, e.g. \"Website Management > AI Visibility & SEO\"."},"proficiencyLevel":{"type":"string","enum":["Beginner","Expert"],"description":"Who the article is written for."},"author":{"type":"string","enum":["agent","organization"],"description":"`agent`: a named person wrote it. `organization`: no byline, the company is the author. Defaults to `agent`, or to `organization` when the profile has no primary agent and no `agentSlug` is given."},"agentSlug":{"type":"string","description":"The author when `author` is `agent`; defaults to `primaryAgent`. Must match an agent's `slug`."},"audience":{"type":"array","items":{"type":"string","minLength":1},"description":"Overrides the profile's `organization.audience` for this article."},"product":{"type":"string","minLength":1,"description":"Slug of the profile product (under `organization.products`) this article documents."},"about":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The topic's name."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies the topic."},"type":{"type":"string","enum":["Thing","Place","Organization","SoftwareApplication","WebSite"],"default":"Thing","description":"schema.org type of the topic. Defaults to Thing."}},"required":["name"],"additionalProperties":false},"default":[],"description":"Topics the article is about."},"mentions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"The topic's name."},"sameAs":{"type":"string","format":"uri","description":"Wikipedia or Wikidata URL that identifies the topic."},"type":{"type":"string","enum":["Thing","Place","Organization","SoftwareApplication","WebSite"],"default":"Thing","description":"schema.org type of the topic. Defaults to Thing."}},"required":["name"],"additionalProperties":false},"default":[],"description":"Topics the article mentions in passing."},"procedures":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Name of the procedure, e.g. \"Connect your domain\"."},"steps":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Short title of the step."},"text":{"type":"string","minLength":1,"description":"The step's instructions."},"url":{"type":"string","format":"uri","description":"Deep link to the step on the page, e.g. `<page>#step-3`."},"image":{"type":"string","format":"uri","description":"An image that shows the step."}},"required":["name"],"additionalProperties":false},"minItems":1,"description":"The steps, in order. At least one."}},"required":["name","steps"],"additionalProperties":false},"default":[],"description":"Step-by-step procedures in the article, compiled to HowTo parts."}},"required":["pageUrl","headline","description","datePublished"],"additionalProperties":false},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"enum":["invalid_request","invalid_json","unsupported_media_type","payload_too_large","unknown_recipe","rate_limited","internal_error"],"description":"Stable and machine-readable."},"message":{"type":"string","description":"For a person; lists every issue."},"issues":{"type":"array","description":"Present for `invalid_request`: one entry per problem.","items":{"$ref":"#/components/schemas/ContractIssue"}}}}}},"ContractIssue":{"type":"object","required":["part","path","code","message"],"properties":{"part":{"enum":["request","profile","input","options"],"description":"Which part of the request is at fault."},"path":{"type":"string","description":"Dotted path inside that part; empty for the part itself."},"code":{"type":"string","description":"A validation code, or `unknown_key`, `unknown_agent`, `unknown_product`."},"message":{"type":"string","description":"What is wrong and, where known, the fix."}}},"Finding":{"type":"object","required":["rule","severity","message","pointer"],"properties":{"rule":{"enum":["type-existence","property-existence","domain","range","enumeration","datatype","id-resolution","orphan","self-reference","duplicate-name","credential-category","host-consistency","thin-entity","image-host","contact-placement","format","event-timing","markup-in-name","url-scheme","postal-code-region","depth-limit","post-load-injected-schema","text-quality","empty-node","identity","listing-completeness"]},"severity":{"enum":["error","warning","info"]},"message":{"type":"string"},"pointer":{"type":"string","description":"Path from the document root, e.g. `@graph[3].offeredBy`."},"nodeId":{"type":"string"},"term":{"type":"string"},"suggestion":{"type":"string"}}},"LintResult":{"type":"object","required":["ok","schemaVersion","counts","findings"],"properties":{"ok":{"type":"boolean","description":"True when there are no errors."},"schemaVersion":{"type":"string","description":"The schema.org release checked against."},"counts":{"type":"object","required":["error","warning","info"],"properties":{"error":{"type":"integer"},"warning":{"type":"integer"},"info":{"type":"integer"}}},"findings":{"type":"array","items":{"$ref":"#/components/schemas/Finding"}}}},"CompileResponse":{"type":"object","required":["engineVersion","recipe","mode","jsonLd","lint"],"properties":{"engineVersion":{"type":"string"},"recipe":{"enum":["agent","article","neighborhood","faq","open-house","help-article"]},"mode":{"enum":["standalone","plugin-stitching"]},"jsonLd":{"type":"object","description":"A JSON-LD document with an `@graph`."},"lint":{"$ref":"#/components/schemas/LintResult"}}},"AuditResult":{"type":"object","required":["engineVersion","source","documentsFound","results","crossScript","totals","ok","notes"],"properties":{"engineVersion":{"type":"string"},"source":{"type":"object","required":["kind"],"properties":{"kind":{"enum":["paste","url","dom"]}},"additionalProperties":true},"documentsFound":{"type":"integer"},"results":{"type":"array","items":{"type":"object","required":["index","lint","document"],"properties":{"index":{"type":"integer"},"lint":{"$ref":"#/components/schemas/LintResult"},"document":{"description":"The parsed JSON-LD block; null when omitted as too large."},"documentOmitted":{"enum":["too-large"]},"origin":{"enum":["static","post-load"]},"injectedTypes":{"type":"array","items":{"type":"string"}}}}},"crossScript":{"type":"array","items":{"type":"object"}},"totals":{"$ref":"#/components/schemas/Counts"},"ok":{"type":"boolean"},"notes":{"type":"array","items":{"type":"string"}},"fetchError":{"type":"object","properties":{"code":{"type":"string"}}},"domCheck":{"type":"object"}}},"Counts":{"type":"object","required":["error","warning","info"],"properties":{"error":{"type":"integer"},"warning":{"type":"integer"},"info":{"type":"integer"}}}}}}