Skip to content

API keys, webhooks and calendar feeds

Running the courseSuperintendent tier and up; keys and webhooks are owner only7 minute readIn the app: /app/developers

For courses that want to build their own thing — keys, signed webhooks, and subscribing to your shifts in your own calendar.

Calendar feeds — the one everybody wants

This one needs no technical knowledge at all. Make a feed for your shifts, the club's events or your tee times, and paste the link into Apple Calendar, Google Calendar or Outlook as a subscription. It's read-only, it only ever shows your own rows, and you can revoke it whenever you like.

API keys

  1. 1Open API & feeds as an owner and create a key, naming what it's for.
  2. 2Decide whether it needs write access. Most things only need read.
  3. 3Copy it now — we store only a hash, so it can never be shown again. Lost one is a new one.
  4. 4Send it as an Authorization header: Bearer, then the key.

Calling /api/v1 with a key returns the list of everything that key can reach — jobs, crew, shifts, tee times, members, events and equipment. Six hundred calls an hour; over that you get a refusal rather than a surprise bill.

Webhooks

Point a URL at us and we'll send it a message when something happens: a tee time booked or cancelled, a job completed, a schedule published, a member joined, an invoice paid, an event sign-up, an order placed, or a machine marked down.

Check the signature

Every message carries a signature header made from a timestamp and your signing secret. Verify it before you trust the contents — otherwise anybody who learns your URL can pretend to be us.

When a webhook fails

We retry. If it keeps failing, the webhook is paused and the failure is shown on the screen with the response we got, rather than being dropped silently. The last twenty-five delivery attempts are listed whatever their outcome.

What we won't accept

A webhook URL has to be https and has to be a real, publicly reachable address. Anything pointing at a private network, a loopback address or a cloud metadata service is refused with a reason.

Questions

Can a key reach another course's data?

No. Every request is scoped to the course the key belongs to, and there is no endpoint that takes a course as a parameter.

Someone left and they had a key.

Revoke it. Anything using it stops working immediately.

Is there a sandbox?

Use the demo course. It's a real account with real data that resets nightly, which is a better sandbox than a fake one.

Didn't answer it?

Tell us what's missing and we'll write it. Help that doesn't cover the thing you came for isn't help.