# Schemas and release artifacts

<span id="contract-set-030"></span>

These artifacts belong to OSD contract set `0.3.0`, pinned to ARD v0.91 at
upstream revision `aa3e598bb7752a9175897823234311216acfa864`.
Use the schemas, release manifest, and fixtures from the same contract set.

The JSON Schemas define the OSD data and validation rules. The specified ARD
version defines inherited fields and their meanings. If an OSD schema conflicts
with ARD, the ARD definition is correct. The
[OSD 0.3.0 specification](/0.3.0/specifications/) describes the contract profile,
behavioral requirements, and compatibility rules. The contract does not define
a resolver's aggregation response envelope.

## JSON Schemas

The schemas cover the pinned ARD entry and manifest models, OSD entries and
brand-domain manifests, registry search requests and complete OSD search
results, error responses, and the contract release manifest.

The OSD profile requires an entry-level `@context` mapping and top-level
`osd:brandName` and `osd:brandDomain` terms. Brand identity is stored directly
on each entry; the pinned ARD metadata constraints remain unchanged.

| Schema | Download |
| --- | --- |
| ARD entry and manifest | [ard-entry](/schemas/ard-entry/0.3.0.schema.json) |
| OSD entry | [osd-catalog-entry](/schemas/osd-catalog-entry/0.3.0.schema.json) |
| OSD brand-domain manifest | [osd-ard-manifest](/schemas/osd-ard-manifest/0.3.0.schema.json) |
| Registry search request | [registry-search-request](/schemas/registry-search-request/0.3.0.schema.json) |
| Registry search response | [registry-search-response](/schemas/registry-search-response/0.3.0.schema.json) |
| Error response | [error-response](/schemas/error-response/0.3.0.schema.json) |
| Contract release manifest | [contract-manifest](/schemas/contract-manifest/0.3.0.schema.json) |

Each schema has an immutable, versioned `$id`. Do not change a schema after its
release. The pinned upstream `ard-entry` schema defines both `ArdEntry` and
`ArdManifest`; the manifest requires an `entries` array.

<span id="release-manifests"></span>

## Release manifest

The [OSD 0.3.0 release manifest](/contracts/releases/0.3.0/manifest.json) identifies the
OSD version and pins the upstream ARD version and revision.

### Publication status

[Publication status](/contracts/releases/0.3.0/status.json) records whether the contract
version is `draft`, `rc`, or `released`. A missing status defaults to `draft`.
The website version selector reads this metadata: `draft` and `rc` display
matching badges; `released` displays no badge.

Publication status can change without changing the immutable contract manifest,
schemas, or validation fixtures. To release a version, set its status to
`released` and update the draft wording in its documentation.

## Validation fixtures

The [OSD 0.3.0 fixture index](/contracts/fixtures/0.3.0/index.json) links the valid and
invalid documents and identifies the schema and expected validation result for
each fixture. A validator must accept the valid fixtures and reject the invalid
fixtures against their indexed versioned schemas.

<span id="registry-directory"></span>

## Registry directory format

The [registry directory schema](/schemas/osd-directories/0.1.0.schema.json)
describes the JSON list of registry operators and search endpoints. Its
`schemaVersion` is `0.1.0`, a separate format version from the OSD `0.3.0`
contract used in registry searches. See the
[directory reference](/0.3.0/docs/reference/osd-directories/) for the uniqueness
and operator-consistency rules that clients also check.

## Layout

- `schemas/<schema-name>/<schema-version>.schema.json` contains the schemas. Each
  schema has a version in its `$id`. Do not change a schema after its release.
- `fixtures/<osd-version>/valid` contains standard documents that the schemas
  must accept.
- `fixtures/<osd-version>/invalid` contains documents that the schemas must
  reject. The fixture index identifies the applicable schema for each document.
- `releases/<osd-version>/manifest.json` identifies the OSD version and the
  upstream contract versions for the release.
- `releases/<osd-version>/status.json` records its publication status separately
  from the immutable contract artifacts.