Skip to content

Course builder

Creates a Course with a provider entity or reference. The Course builder injects @type, validates synchronously, and rejects unknown properties.

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

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

import {
CourseSchema,
type SchemaInput,
type SchemaOutput,
} from '@unschema-graph/core';
type CourseInput = SchemaInput<typeof CourseSchema>;
type CourseOutput = SchemaOutput<typeof CourseSchema, 'Course'>;
Property Input type Required Default / constraints
@id string No non-empty
name string Yes non-empty
description string Yes non-empty
provider string | Person | Organization | LocalBusiness | EntityReference Yes non-empty
courseCode string No —
educationalCredentialAwarded string No —
inLanguage string No —
offers Offer | AggregateOffer | Array<Offer | AggregateOffer> 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: 'Course'.

import { Course } from '@unschema-graph/core';
const entity = Course({
"name": "Astro fundamentals",
"description": "Build content-driven sites with Astro.",
"provider": "Acme Academy"
});
{
"@type": "Course",
"name": "Astro fundamentals",
"description": "Build content-driven sites with Astro.",
"provider": {
"@type": "Organization",
"name": "Acme Academy"
}
}
  • 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 Course.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.