Schema
Course data model
DiscGolfAPI course records are designed for maps, directories, search, and operational tools. Unknown values are published as null, not guessed.
1.0.0Example course object
This is the public shape exposed by /courses and /courses/{id}.
{
"id": "crs_a6_discgolfpark",
"slug": "a6-discgolfpark",
"name": "A6 Discgolfpark",
"lat": 57.7712848862281,
"lon": 14.2084014415741,
"country_code": "SE",
"region_code": null,
"locality": "Jönköping",
"website": "https://www.jbdg.se/a6-discgolfpark/",
"operator_name": null,
"holes": 18,
"existence_status": "existing",
"operational_status": "open",
"access_model": "unknown",
"condition_status": "unknown",
"listing_status": "listed",
"confidence_score": 0.75,
"verification_strength": "strong",
"last_verified_at": "2026-04-05T20:34:26.937241Z",
"updated_at": "2026-04-05T21:13:47.516490Z",
"primary_layout": {
"slug": "main-layout",
"name": "Main Layout",
"holes": 18,
"par_total": null,
"length_meters": null
},
"attributes": null
}
Field definitions
| Field | Type | Meaning |
|---|---|---|
id | string | Stable public course identifier. |
slug | string | Human-readable identifier suitable for URLs. |
name | string | Course name. |
lat, lon | number | Decimal coordinates for mapping. |
country_code | string | ISO-style country code used for filtering. |
region_code | string or null | Region, state, province, or country subdivision where available. |
locality | string or null | Nearest town, city, or locality when known. |
website | string or null | Course, operator, venue, or official information URL. |
operator_name | string or null | Known operator or managing organisation. |
holes | number or null | Known hole count. Null means unknown, not zero. |
confidence_score | number | Record confidence from 0 to 1. |
verification_strength | string | Readable confidence bucket, currently strong, medium, or low. |
last_verified_at | timestamp | When the record was last checked against available evidence. |
updated_at | timestamp | When the public record was last changed. |
Status values
Status fields describe what is known. They should be displayed as data quality signals rather than hidden away.
existence_statusindicates whether the course is believed to exist.operational_statusindicates whether play appears to be available.access_modelcaptures public, private, paid, or unknown access where known.condition_statuscaptures known condition signals where available.listing_statusindicates whether the record is included in public listings.
Primary layout
primary_layout describes the main playable layout when known. Layout data may be incomplete while still being useful for a course listing.
| Field | Meaning |
|---|---|
slug | Layout slug, usually main-layout. |
name | Display name for the layout. |
holes | Layout hole count where known. |
par_total | Total par where known. |
length_meters | Measured or published layout length where known. |
Null handling
Missing values mean unknown or not yet verified. Avoid interpreting null as false, closed, free, public, or unavailable.
For production UI, show useful fallbacks such as “hole count unknown” instead of inventing values.
