OPEN FORMAT. OWNER CONTROL.
Passport Schema
Your property facts, ready to travel.
An Openstays Property Passport gives people and AI a structured description of your property: what it is, who it suits and how to contact you directly. Create and host your own without an OpenStays.AI account.
Make it yours
Start with your facts
Download the blank file and edit it as JSON. Replace empty identity fields with your property name and your own public URLs. The blank is a starting point, not a valid listing.
Describe the actual stay
Keep the property and its separately bookable units distinct. Give each unit a stable identifier and URL. Leave unknown numbers as null: zero and false mean something different from unknown.
Share only what belongs in public
Include only public information you have permission to share. Leave out private addresses, personal contact details, guest information, passwords and access codes. Publish photos only when you have the rights. A checker cannot detect every private detail inside your text.
Check, then host
Check your JSON below, download it and put it on your own HTTPS website. Serve it as application/json and link to it from your property page. Keep its URL stable and update the file when your facts change.
Check your Passport
Paste JSON or choose a file. Checking happens in your browser. Your file contents are not uploaded or included in analytics.
Start with the blank download or your own public Passport JSON.
Check without a connection
Download the offline checker and keep it with your JSON file. With Node.js 20 or later installed, run the command below. No account, application credentials or network connection is needed to check a file.
node validate.mjs passport.json portableFor an OpenStays.AI export, replace portable with platform. The checker reports field paths and issue codes, never your file contents. A non-zero exit status means the check did not pass.
Full Passport conformance requires the JSON Schema structure and the shared checker's consistency rules. JSON Schema alone cannot compare a unit count with an array length, detect repeated unit identifiers, compare dates or match currencies across fields. Our browser and offline checkers apply the same rules. Neither verifies property facts, ownership or an assessment issuer.
What the fields mean
- property_profile
- Your public identity, document URLs and whether this describes one unit or a multi-unit property. Independent files do not need platform connection or review states.
- physical_place_public
- Your chosen public location. An approximate location must not contain a street address, postcode or coordinates.
- accommodation_units
- The actual units and their capacity, layout and stable identifiers. A collection of units is not automatically one exclusive rental.
- public_information
- Descriptions, amenities, practical notes and caveats. Empty lists mean no information supplied, not that a feature is absent.
- contact_routes
- Public contact or website links. A website link is not proof of ownership, a booking API or a guarantee of commission-free terms.
- external_links and photos
- Public links and rights-confirmed images. You remain responsible for permission and continued access to externally hosted images.
- canonical_facts
- Structured rules and indicative rates. Prices are not live quotes. Dates and units matter; never apply a whole-property price to every unit.
- fact_provenance
- Who asserted the facts and what is known about their source. An unknown check date stays null. A document update is not a fact check.
- evaluations
- OpenStays.AI-issued assessments belong only in platform exports. Leave this empty in independent files. A format check cannot authenticate an issuer.
Better for which job?
Our focus is a small, checkable property description you can keep and share. That is a different job from search markup, distribution feeds and reservation messages. These are three established approaches, not a popularity ranking.
Schema.org VacationRental
A strong choice for describing your property on the wider web. It already supports partial descriptions, website links and independent publication. Our toolkit adds a focused authoring scaffold and explicit consistency checks for the Passport format; it does not replace Schema.org's reach or prove better search visibility.
Google Vacation Rentals XML
Designed for Google's Vacation Rentals integration, with listing requirements and separate price and availability feeds. A Passport can start without photos, prices or an exact address. It is not a Google distribution integration and does not satisfy Google's eligibility requirements by itself.
OpenTravel lodging messages
Built for exchanges between travel systems. The 2021A descriptive-message family already supports owner-maintained content, partial updates and source information. Our standalone JSON workflow is narrower. It does not replace OpenTravel's transaction coverage or trading-partner agreements.
Open format. Clear boundaries.
The Passport schema and DIY toolkit are MIT-licensed. That does not license customer content, photography or OpenStays.AI branding. You can create, validate and host your own Passport without an account.
Self-hosting does not add your property to OpenStays.AI search or MCP, verify ownership, guarantee AI recommendations or make bookings. Platform JSON-LD is a separate, potentially lossy projection, not this JSON Schema and not a guarantee of Google display.
Existing platform exports retain their wire-version labels. The published schema describes that public envelope and an independent-hosting mode. Neither mode includes private drafts or owner account data.