Skip to content

LodgingBusiness builder

Creates lodging metadata on top of the LocalBusiness fields. The LodgingBusiness builder injects @type, validates synchronously, and rejects unknown properties.

// Astro — shown first when Astro is selected
import { LodgingBusiness } from '@unschema-graph/astro';
// Svelte 5
import { LodgingBusiness } from '@unschema-graph/svelte';
// Core / Node.js
import { LodgingBusiness } from '@unschema-graph/core';
import { LodgingBusinessSchema } from '@unschema-graph/core';

The LodgingBusinessSchema Zod schema is also exported for composition and advanced validation.

import {
LodgingBusinessSchema,
type SchemaInput,
type SchemaOutput,
} from '@unschema-graph/core';
type LodgingBusinessInput = SchemaInput<typeof LodgingBusinessSchema>;
type LodgingBusinessOutput = SchemaOutput<typeof LodgingBusinessSchema, 'LodgingBusiness'>;
Property Input type Required Default / constraints
@id string No non-empty
name string Yes non-empty
address string | PostalAddress | EntityReference Yes —
image string | ImageObject No non-empty
telephone string No —
priceRange string No —
url string No —
geo GeoCoordinates No —
openingHoursSpecification object | Array No —
currenciesAccepted string No —
paymentAccepted string No —
sameAs string | Array No —
servesCuisine string | Array No —
menu string No —
checkinTime string No —
checkoutTime string No —
numberOfRooms number No integer; greater than 0; maximum: 9007199254740991
petsAllowed boolean | string No —
amenityFeature string | Array | object | Array No —
starRating object No —

The aliases above remain the exact authority for nested object types. The builder also accepts a validation configuration as its second argument and always returns @type: 'LodgingBusiness'.

import { LodgingBusiness } from '@unschema-graph/core';
const entity = LodgingBusiness({
"name": "Acme Paris",
"address": {
"streetAddress": "1 Rue de Rivoli",
"addressLocality": "Paris",
"postalCode": "75001",
"addressCountry": "FR"
}
});
{
"@type": "LodgingBusiness",
"name": "Acme Paris",
"address": {
"streetAddress": "1 Rue de Rivoli",
"addressLocality": "Paris",
"postalCode": "75001",
"addressCountry": "FR"
}
}
  • Passing an unknown property to the strict builder.
  • Using source data that is missing a required property.
  • Assuming valid Schema.org guarantees a search appearance.

Use LodgingBusiness.safeParse(input) for external data. If Schema.org supports a property that is not modeled yet, validate the entity first and then use withAdditionalProperties(). Never pass invented properties to the strict builder.