DiscGolfAPI · Schema

DiscGolfAPI Course

JSON Schema for a public disc golf course record as published by DiscGolfAPI. Captures stable identity, location, operational and access status, confidence and verification signals, and the primary playing layout.

Disc GolfSportsCoursesOpen DataRecreation

Properties

Name Type Description
id string Stable public course identifier.
slug string URL-safe slug for the course.
name string Display name of the course.
lat numbernull Latitude in decimal degrees. Null when coordinates are not available.
lon numbernull Longitude in decimal degrees. Null when coordinates are not available.
country_code string ISO 3166-1 alpha-2 country code.
region_code stringnull Region, state, or subdivision code where available.
locality stringnull City, town, or locality name where available.
website stringnull Official course or operator website where available.
operator_name stringnull Operating organisation or club name where available.
holes integernull Known hole count. Null means unknown, not zero.
existence_status string Whether the course is believed to exist (e.g., existing, removed, proposed).
operational_status string Whether the course is currently playable (e.g., open, closed, seasonal).
access_model string Access model such as public, private, pay-to-play, or unknown.
condition_status string Reported condition of the course (e.g., maintained, neglected, unknown).
listing_status string Public listing status (e.g., listed, unlisted).
confidence_score number Numeric confidence signal for the record between 0 and 1.
verification_strength string Human-readable verification bucket such as low, medium, or high.
last_verified_at stringnull Timestamp of the most recent verification, when available.
updated_at string Timestamp of the most recent record update.
primary_layout object Primary playing layout for the course where defined.
attributes objectnull Open extension bag for forward-compatible course attributes.
View JSON Schema on GitHub

JSON Schema

discgolfapi-course-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/discgolfapi/json-schema/discgolfapi-course-schema.json",
  "title": "DiscGolfAPI Course",
  "description": "JSON Schema for a public disc golf course record as published by DiscGolfAPI. Captures stable identity, location, operational and access status, confidence and verification signals, and the primary playing layout.",
  "type": "object",
  "required": [
    "id",
    "slug",
    "name",
    "lat",
    "lon",
    "country_code",
    "region_code",
    "locality",
    "website",
    "operator_name",
    "holes",
    "existence_status",
    "operational_status",
    "access_model",
    "condition_status",
    "listing_status",
    "confidence_score",
    "verification_strength",
    "last_verified_at",
    "updated_at",
    "primary_layout",
    "attributes"
  ],
  "properties": {
    "id": {
      "type": "string",
      "pattern": "^crs_[a-z0-9_]+$",
      "description": "Stable public course identifier."
    },
    "slug": {
      "type": "string",
      "description": "URL-safe slug for the course."
    },
    "name": {
      "type": "string",
      "description": "Display name of the course."
    },
    "lat": {
      "type": ["number", "null"],
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees. Null when coordinates are not available."
    },
    "lon": {
      "type": ["number", "null"],
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees. Null when coordinates are not available."
    },
    "country_code": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2,
      "description": "ISO 3166-1 alpha-2 country code."
    },
    "region_code": {
      "type": ["string", "null"],
      "description": "Region, state, or subdivision code where available."
    },
    "locality": {
      "type": ["string", "null"],
      "description": "City, town, or locality name where available."
    },
    "website": {
      "type": ["string", "null"],
      "format": "uri",
      "description": "Official course or operator website where available."
    },
    "operator_name": {
      "type": ["string", "null"],
      "description": "Operating organisation or club name where available."
    },
    "holes": {
      "type": ["integer", "null"],
      "minimum": 1,
      "description": "Known hole count. Null means unknown, not zero."
    },
    "existence_status": {
      "type": "string",
      "description": "Whether the course is believed to exist (e.g., existing, removed, proposed)."
    },
    "operational_status": {
      "type": "string",
      "description": "Whether the course is currently playable (e.g., open, closed, seasonal)."
    },
    "access_model": {
      "type": "string",
      "description": "Access model such as public, private, pay-to-play, or unknown."
    },
    "condition_status": {
      "type": "string",
      "description": "Reported condition of the course (e.g., maintained, neglected, unknown)."
    },
    "listing_status": {
      "type": "string",
      "description": "Public listing status (e.g., listed, unlisted)."
    },
    "confidence_score": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "description": "Numeric confidence signal for the record between 0 and 1."
    },
    "verification_strength": {
      "type": "string",
      "description": "Human-readable verification bucket such as low, medium, or high."
    },
    "last_verified_at": {
      "type": ["string", "null"],
      "format": "date-time",
      "description": "Timestamp of the most recent verification, when available."
    },
    "updated_at": {
      "type": "string",
      "format": "date-time",
      "description": "Timestamp of the most recent record update."
    },
    "primary_layout": {
      "oneOf": [
        { "$ref": "#/$defs/PrimaryLayout" },
        { "type": "null" }
      ],
      "description": "Primary playing layout for the course where defined."
    },
    "attributes": {
      "type": ["object", "null"],
      "additionalProperties": true,
      "description": "Open extension bag for forward-compatible course attributes."
    }
  },
  "$defs": {
    "PrimaryLayout": {
      "type": "object",
      "required": [
        "id",
        "slug",
        "name",
        "holes",
        "par_total",
        "length_meters",
        "confidence_score",
        "verification_strength",
        "last_verified_at"
      ],
      "properties": {
        "id": { "type": "string", "description": "Stable layout identifier." },
        "slug": { "type": "string", "description": "URL-safe slug for the layout." },
        "name": { "type": "string", "description": "Display name of the layout." },
        "holes": { "type": ["integer", "null"], "minimum": 1, "description": "Hole count of the layout." },
        "par_total": { "type": ["integer", "null"], "minimum": 1, "description": "Total par for the layout." },
        "length_meters": { "type": ["number", "null"], "minimum": 0, "description": "Total layout length in meters." },
        "confidence_score": { "type": "number", "minimum": 0, "maximum": 1, "description": "Confidence signal for the layout." },
        "verification_strength": { "type": "string", "description": "Verification bucket for the layout." },
        "last_verified_at": { "type": ["string", "null"], "format": "date-time", "description": "Layout verification timestamp." }
      }
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/discgolfapi-course"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.