DiscGolfAPI · Schema

DiscGolfAPI Manifest

JSON Schema for the DiscGolfAPI dataset manifest published at https://io.discgolfapi.com/manifest.json. The manifest carries contract and publish versions, generated timestamp, dataset counts, and content-addressable artefact metadata for the current public release.

Disc GolfSportsCoursesOpen DataRecreation

Properties

Name Type Description
contract_version string Public response contract version (semver).
publish_version string Compact UTC publish stamp identifying this release.
generated_at string When this release was generated, in ISO-8601.
release_scope string Release scope label (e.g., all).
artefact_base_url string Base URL where this release's artefacts are served.
counts object
artefacts object Content-addressable artefact manifest keyed by logical artefact name.
View JSON Schema on GitHub

JSON Schema

discgolfapi-manifest-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/discgolfapi/json-schema/discgolfapi-manifest-schema.json",
  "title": "DiscGolfAPI Manifest",
  "description": "JSON Schema for the DiscGolfAPI dataset manifest published at https://io.discgolfapi.com/manifest.json. The manifest carries contract and publish versions, generated timestamp, dataset counts, and content-addressable artefact metadata for the current public release.",
  "type": "object",
  "required": [
    "contract_version",
    "publish_version",
    "generated_at",
    "release_scope",
    "artefact_base_url",
    "counts",
    "artefacts"
  ],
  "properties": {
    "contract_version": {
      "type": "string",
      "description": "Public response contract version (semver)."
    },
    "publish_version": {
      "type": "string",
      "description": "Compact UTC publish stamp identifying this release."
    },
    "generated_at": {
      "type": "string",
      "format": "date-time",
      "description": "When this release was generated, in ISO-8601."
    },
    "release_scope": {
      "type": "string",
      "description": "Release scope label (e.g., all)."
    },
    "artefact_base_url": {
      "type": "string",
      "format": "uri",
      "description": "Base URL where this release's artefacts are served."
    },
    "counts": {
      "type": "object",
      "required": ["courses", "countries", "regions", "recent_updates"],
      "properties": {
        "courses": { "type": "integer", "minimum": 0, "description": "Number of public courses in this release." },
        "countries": { "type": "integer", "minimum": 0, "description": "Number of countries represented." },
        "regions": { "type": "integer", "minimum": 0, "description": "Number of regions, states, or subdivisions represented." },
        "recent_updates": { "type": "integer", "minimum": 0, "description": "Number of recent update records." }
      }
    },
    "artefacts": {
      "type": "object",
      "description": "Content-addressable artefact manifest keyed by logical artefact name.",
      "additionalProperties": {
        "type": "object",
        "required": ["path", "sha256", "bytes"],
        "properties": {
          "path": { "type": "string", "description": "Artefact path relative to the release base URL." },
          "sha256": { "type": "string", "description": "SHA-256 hex digest of the artefact bytes." },
          "bytes": { "type": "integer", "minimum": 0, "description": "Artefact size in bytes." }
        }
      }
    }
  }
}