App platform
Build apps for tennis clubs that work with CheckCourt data, react to events and appear in the user interface.
An app connects your service to CheckCourt, not just for one club but for every club that wants to use it: a door lock that opens at booked times, floodlights that switch themselves, a sync with the accounting system, or a calendar that knows a member's own bookings.
The platform is opening step by step
Developer organizations come by sign-up or invitation, depending on whether sign-up is currently open. Private apps for individual clubs work today. Publishing in the marketplace is being enabled gradually; the marketplace itself is on for every club unless support switched it off. Write to [email protected] if you want to build an app.
What an app can do
- Read and change data through the REST API, with exactly the permissions the club or member has consented to.
- React to events: CheckCourt reports bookings, cancellations, membership changes and court locks by webhook.
- Appear in the user interface: as a section in the booking view, as a tile on the dashboard or on the kiosk, as a button on a booking, as badges on courts, as a column in the member list, as an entry with a page of its own in the navigation, or as a settings page. See UI extensions.
- Offer rights to the club's roles, such as who may manage a ladder. See
permissions. - Notify members through CheckCourt without learning their contact data. See Notifications.
- Share data and events with other apps, once the club approves. See Connections between apps.
Your own code never runs on CheckCourt servers. Your app is a service that you operate yourself.
Three installation types
| Club app | Member app | Club app with user linking | |
|---|---|---|---|
| Who installs? | A club admin, for the whole club | Each member, for their own account | The club installs, members additionally link their account |
| Examples | Door lock, floodlights, accounting, bank reconciliation | Calendar sync, personal statistics | Camera system: the club owns the cameras, the member sees their videos |
| Access | Installation token via client credentials | OAuth 2.1 with PKCE | Both |
| Permissions | tenantScopes in the manifest | userScopes in the manifest, never more than the member is allowed to do | Both |
| Manifest | "installTargets": ["tenant"] | "installTargets": ["user"] | "installTargets": ["tenant"] and "userLinking": "optional" |
An app can also be a club app and a member app at the same time
("installTargets": ["tenant", "user"]).
Member apps are always bound to a club. If a member belongs to several clubs, they decide when connecting which clubs the app should apply to, and each club gets its own connection. Each club decides for itself whether members may connect an app at all. Links under a club installation don't need this approval, because the club has already installed the app.
App lifecycle
Entwurf ──> Privat ──> In Prüfung ──> Veröffentlicht
(Gesperrt: Not-Aus durch CheckCourt)The developer portal shows these statuses in German: Entwurf (Draft), Privat (Private), In Prüfung (In review), Veröffentlicht (Published), Gesperrt (Suspended, an emergency stop by CheckCourt).
| Status | Who can install the app? | Who sets the status? |
|---|---|---|
| Entwurf | Only your sandbox club | You |
| Privat | Your sandbox club and clubs you enable via install link | You |
| In Prüfung | Same as Privat. CheckCourt reviews the submitted version | The submission |
| Veröffentlicht | Additionally every club that has the marketplace enabled | CheckCourt, after review |
| Gesperrt | Nobody. All tokens become invalid immediately | CheckCourt |
You switch between Entwurf and Privat yourself in the developer portal. An app only gets into the marketplace through review.
How clubs get your app
- Sandbox club: Every developer organization has its own club with test data. Any app can be installed there, always with the latest uploaded version.
- Install link: For a private app, you create a link and send it to a club's admin. When they open it, the app is enabled for that club. This is the route for pilot clubs and for apps that only one club uses. With a link for a pre-release, the club gets every new version immediately, including unreviewed ones.
- Marketplace: Clubs see published apps under Admin → Apps → App hinzufügen (Add app). The marketplace is on for every club by default; support can switch it off for a club. Only versions reviewed by CheckCourt run there.
Which version a club gets in each case is explained in Review and marketplace.
Terms
| Term | Meaning |
|---|---|
| Developer organization | Your team in the developer portal. It owns apps, members and a sandbox club |
| App | Your application with client ID, secrets, webhook URL, versions and marketplace listing |
| Manifest | JSON description of a version: permissions, events, extensions, data processing |
| Version | An uploaded manifest. Immutable, numbered sequentially |
| Installation | An app in a club (club app) or for a member in a club (member app) |
| Scope | A single permission such as bookings:read. Clubs see German labels for it, such as „Belegung sehen“ (view occupancy) |