Changelog

This page lists the changes to the Parkdly API. Each version is a non-breaking update to the v1 API.

0.5 (2026-10-06)

Changed

  • Deleted courses can be restored — a user can restore a deleted course for 30 days. While deleted, the course answers 404 and is left out of GET /api/v1/courses, as before. When it is restored, it answers again with the same course id and hole ids, and your app receives course.published. POST /api/v1/courses with the externalCourseId of a deleted course restores it and answers 409 course_already_exists, as for a course that exists. See Webhooks.

0.4 (2026-06-13)

Added

  • Rate limiting — per-application rate limits are now enforced on all /api/v1/ endpoints. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers; exceeding a limit returns 429 Too Many Requests with a Retry-After header. See Rate Limits for the per-endpoint limits.

0.3 (2026-03-06)

Added

  • course.deleted webhook event — fired automatically when a user deletes an externally linked course. Payload includes full course data as it was before deletion, so your app can remove its references. See Webhooks for details.

0.2 (2026-03-06)

Added

  • studioUrl field on Course object — relative path to the course editor in Parkdly Studio. Add your Parkdly host (for example https://parkdly.com) before it to open it in a browser. Included in all API responses and webhook payloads.
  • location field on Course object — optional {lat, lng} coordinates. Set it with POST /api/v1/courses to center the map in Parkdly Studio. Returned as null when not set.
  • flightPath input on course creation — POST /api/v1/courses now accepts optional flightPath control points per fairway. Format matches the GET response: [{order, lat, lng}]. When you omit it, Parkdly generates one control point at the midpoint (existing behavior, unchanged).

0.1 (2026-02-15)

Added

  • Initial API release (Preview)
  • OAuth 2.0 authentication with PKCE support
  • GET /api/v1/courses — list courses
  • GET /api/v1/courses/{courseId} — get course details
  • POST /api/v1/courses — create course with optional fairways
  • course.published webhook event
  • Error handling and response format documentation