Gladstone Knowledge Base
API reference, integration guides and knowledge base articles for the Gladstone GO platform. Every page below is also available as markdown: add .md to its address. The markdown index is llms.txt.
Guides
Getting Started
- Getting started — Where to begin with the Gladstone GO platform — how the guides are organised and the order to read them in.
- Glossary — Definitions of the Gladstone terms that appear throughout the API — read this before your first integration.
- Authenticating with Gladstone APIs — Choose between API key and OAuth2 authentication, and understand what each one is for.
- API Key Authentication — Exchange a partner API key for a bearer token, including member-scoped tokens and refresh.
- OAuth2 Authentication — The legacy client-credentials flow, still supported for existing server-to-server integrations.
- Restrictions — Rate limits, country blocks and the other platform restrictions your integration must handle.
- DMCCA required API updates — Changes your integration must make to comply with the Digital Markets, Competition and Consumers Act.
Flows
- Joining — Implement the membership purchase flow end to end, from pricing to a paid-up member.
- Booking — Build a booking journey — availability, leases, pricing and confirmation.
- Payments — Take payment for bookings and memberships, including 3-D Secure challenges.
Support
- Raising a support case — How to sign in to Gladstone Support with your Operator account, raise a case, choose a severity, attach screenshots, and follow or close it in My Cases.
API reference
- Getting started — How the API reference is organised, how to read an endpoint page, and what to set up before your first call.
Access Control
The checkpoints (entry points such as turnstiles and doors) configured at your sites, and the restrictions at each. For who passed through them, see Members (Participation).
Checkpoint
- Retrieves all checkpoints with basic details and configuration:
GET /api/accesscontrol/checkpoints— Lists every checkpoint configured in the system, together with the restrictions that apply at each one. A checkpoint (also called an entry point) is a physical access point at a site — a turnstile, a door, a reception desk card reader.
Bookings
Availability of classes, courts and other sessions; leases that hold a place during checkout; pricing a slot; creating and cancelling bookings and marking attendance; recurring block bookings; alert (waiting) lists; booking sheets and their exceptions, such as closures; booking business rules.
AlertList
- Add a member to an alert list using slot reference:
POST /api/bookings/{memberId}/alert-list— Adds a member to the alert list (waiting list) for a session, identified by the slot reference you already hold from availability. The endpoint takes the booking from the slot reference and puts the member on that booking's alert list, returning their place in the queue. - Delete a member from an alert list:
DELETE /api/bookings/{memberId}/alert-list— Removes a member's place on the alert list (waiting list) for one booking. An alert list holds members who wanted a place on a class or activity that was full; when a place frees up they can be promoted onto the booking with Promotes a member from an alert list.
Availability
- List all available sessions (Version 1):
GET /api/availability/sessions— Lists the bookable sessions for one or more activities, day by day, together with how much space is left in each and the window during which each may be booked. - List all available sessions (Version 2):
GET /api/availability/v2/sessions— Lists the bookable sessions for one or more activities, day by day, together with how much space is left in each and the window during which each may be booked. - List all available sessions for a specific member:
GET /api/availability/sessions/{memberid}— Lists the bookable sessions for one or more activities as they apply to one member, day by day, together with how much space is left in each and the window during which each may be booked. - List all available sessions for a specific member (Version 2):
GET /api/availability/v2/sessions/{memberid}— Lists the bookable sessions for one or more activities as they apply to one member, day by day, together with how much space is left in each and the window during which each may be booked.
BlockBookings
- Create a block booking schedule with recurring reservations:
POST /api/bookings/block-bookings— Books the same slot repeatedly for one member in a single call. - Deletes all linked reservations from a block booking schedule:
DELETE /api/bookings/block-bookings/{scheduleId}— Cancels the reservations behind a block booking — a recurring series such as a weekly club night — in one call, and tidies up the schedule behind them when it can. - Update an existing block booking schedule:
PUT /api/bookings/block-bookings/{scheduleId}— Replaces the bookings in an existing block booking schedule — a recurring series of reservations held for a single member — with the series this request describes.
Booking Leases & Creation
- Create a new booking:
POST /api/bookings— Converts one or more temporary booking leases into confirmed bookings, generating the associated sales invoices in the process. This is the final call in the booking flow — by the time you reach it you must already hold a valid lease and a matching pricing quote.
Bookings
- Create a new member with an associated booking:
POST /api/bookings/add-member-with-booking— Registers a brand new member and confirms their first booking in one call. It is the endpoint behind "book now, no account needed": the person is unknown to the system when the call starts and has a member record and a confirmed booking when it finishes. - Create or update a booking lease:
PUT /api/bookings/lease/{uuid}— Holds the spaces in a slot while a booking is completed. This is the first call in the booking flow: create the lease here, price it, then confirm it withPOST /api/bookings, passing this lease's id asleaseId. - Delete a booking lease:
DELETE /api/bookings/lease/{id}— Releases a booking lease and frees the spaces it was holding, so the slot becomes available to other bookers again. Use it when a booker abandons the flow, changes their mind before confirming, or when you want to tidy up a hold you no longer need. - Delete an empty booking:
DELETE /api/bookings/{bookingId}— Deletes the booking record itself — the slot, not a person's place in it. - Deletes one or more bookings:
DELETE /api/bookings— Cancels a batch of bookings in one call. For each booking, every member booked on to it is removed; a booking that has nobody on it is deleted outright. - Mark a booking as attended or unattended by a specific member:
POST /api/bookings/{memberId}/attend-booking/{bookingId}— Records whether a member turned up for a booking they hold. Use it to check a member in at the door, and use it withunattend=trueto reverse a check-in that was made in error. - Promotes a member from an alert list:
POST /api/bookings/{memberId}/promote-from-alert-list/{bookingId}— Converts a member's place on an alert list (waiting list) into a confirmed booking. Reach for this when a space is released on a full class and you want to move a specific waiting member onto it.
BookingSheets
- Creates a booking sheet:
POST /api/booking-sheets— Creates a booking sheet: a named group of products, held at one site, that the other booking-sheet endpoints then report bookings and exceptions against. - Deletes a booking sheet:
DELETE /api/booking-sheets/{productRecipeId}— Deletes an existing booking sheet for a given resource group. Use this only when the booking sheet itself should be removed; the request is rejected while any activities still reference the sheet. - Get timebands:
GET /api/booking-sheets/timebands— Lists the time bands configured for your sites. A time band is a named period of the day — an off-peak morning, a peak evening — that a booking sheet is divided into, and it is the unit you work in when you block time out. - Return a single booking with member details in the same format as a booking sheet:
GET /api/booking-sheets/booking/{bookingId}— Returns one booking in exactly the shape it takes inside a booking sheet, so you can refresh a single cell of a sheet without re-fetching the whole grid. The response is a bare booking object, not wrapped inresourceGroups. - Return booking sheets for the given resource group but with no member details:
GET /api/booking-sheets/{id}— Returns everything needed to draw a booking sheet — a day-by-day grid of one resource group's bookable resources, the bookings on them, and the periods when they are closed — without any personal data about the people on those bookings. - Return booking sheets for the given resource group with member details:
GET /api/booking-sheets/{id}/with-member-details— Returns everything needed to draw a booking sheet — a day-by-day grid of one resource group's bookable resources, the bookings on them, and the periods when they are closed — with the people on each booking included. - Updates a booking sheet:
PUT /api/booking-sheets/{productRecipeId}— Replaces the name, site and resource list of an existing booking sheet — the group of bookable resources, such as the courts in a sports hall, that Return booking sheets for the given resource group with member details renders as one grid.
BusinessRules
- Create a new business rule:
POST /api/business-rules— Creates a business rule: a piece of automation that watches for an event on the system — the trigger — and, when that event happens for a member, sends one or more emails or calls one or more webhooks. - Delete a business rule:
DELETE /api/business-rules/{id}— Permanently removes a business rule, so it stops firing the moment the call succeeds. There is no undo. - List all business rules:
GET /api/business-rules— Lists every business rule configured for the tenant, active or not. - Retrieve details for a business rule:
GET /api/business-rules/{id}— Retrieves one business rule with its full configuration: the trigger that fires it, its actions, the conditions that select an action, and the results each action produces. - Update details for a business rule:
PUT /api/business-rules/{id}— Replaces the definition of an existing business rule: its description, its active flag, the trigger it listens to and its complete set of actions.
Exceptions
- Create one or more booking sheet exceptions:
POST /api/booking-sheets/exception— Blocks out time on a booking sheet, so no new booking can be taken against the named resource products during the periods you describe — maintenance, a closure, a school hire, anything that takes the resource off sale. - Delete booking sheet exceptions within a date range:
DELETE /api/booking-sheets/exception/{scheduleId}— Removes exceptions from a schedule created by Create one or more booking sheet exceptions, putting the time back on sale. - Update one or more booking sheet exceptions:
PUT /api/booking-sheets/exception/{scheduleId}— Rewrites the exceptions produced by an existing recurring schedule. An exception blocks a resource product for a period of time so that no booking can be taken against it — a maintenance window, a staff meeting, a closure.
SessionPrices
- Calculate session pricing:
POST /api/pricing/session— Prices a selected session (one slot) for a member or a non-member, returning the member's own price and the price at each price level a guest can be booked at. - Retrieve pricing information for different members:
POST /api/pricing/slots— Prices one slot for several people at once, returning a signed pricing quote per person.
Communications
Email, SMS and push notification templates, SMS credits and balance, scheduled communication jobs, and resending a communication.
Credits
- List all credit bundles:
GET /api/communications/credits— Retrieves a list of email credit bundles for use with custom audiences. Includes the current available credit balance as an overview of how many credits are available to be used currently.
EmailTemplateSetup
- Create and retrieve email template setup details:
POST /api/communications/email-template-setup— Creates an email template and returns everything an editor needs to render it: the new template's identifier, its HTML, its editor configuration and the list of merge placeholders available to it. - Retrieve email template setup details for editing:
PUT /api/communications/email-template-setup— Returns the setup details of an email template that already exists — its saved HTML, its editor configuration and the merge placeholders available to it — so an editor can reopen it.
Power2Account
- Create Power2 sub account with credit transfer:
POST /api/communications/sms/create-account— Sets a tenant up to send text messages. The call creates a sub-account under Gladstone's account with Power2 — the third-party gateway used for SMS — transfers 50 credits into it from the main account, and records the resulting sub-account name and sender id in the tenant's…
PushNotification
- Get default push notification template by key:
GET /api/communications/push-notifications/default-templates/{key}— Retrieves a push notification template by its key — the stable text identifier a template ships with, such asCLASS_ALERT— rather than by its numeric id. - Get push notification template by template ID:
GET /api/communications/push-notifications/default-template/{id}— Retrieves a push notification template by its numeric identifier, returning the wording of the notification in every language it has been translated into, along with its two optional tap actions and their destinations.
QueryJoins
- Get join configurations for database table:
GET /api/communications/query-joins/{sourceTable}— Lists the joins configured for one table in the audience query builder: which other tables you may pull fields from when an audience starts from this table, and the columns each join is made on.
ScheduleJob
- Create a scheduled communication job:
POST /api/communications/schedule-job— Creates a communication job: a stored definition that sends an email, a push notification and/or an SMS to an audience, either once at a fixed moment or repeatedly on a schedule. - Delete a scheduled communication job:
DELETE /api/communications/schedule-job/{id}— Cancels a scheduled communication job — the record that says "send this email, SMS or push notification to this audience, at this time or on this recurrence". - Resend a communication:
POST /api/communications/schedule-job/resend-communication/{communicationHistoryId}— Sends one already-sent communication again, exactly as it went out the first time. - Update a scheduled communication job:
PUT /api/communications/schedule-job/{id}— Replaces the configuration of an existing recurring communication job — its content, audience, schedule and test settings — keeping the job's id and its history.
Sms
- Get SMS account balance:
GET /api/communications/sms/balance— Returns the SMS credits remaining for this tenant with Power2, the third-party gateway Gladstone uses to send text messages.
SmsTemplate
- Get SMS template by ID:
GET /api/communications/sms-templates/{templateId}— Returns one SMS template with its message text in every language it has been written in.
Digital Passes
Wallet passes for booking tickets and memberships.
BookingTicket
- Create booking ticket passes.:
POST /api/digital-pass/booking-ticket-pass— Creates one digital ticket pass per attendee on a booking — the wallet passes attendees add to their phones and present at the venue — and returns a single link from which they are all downloaded.
MembershipPass
- Create a membership pass.:
POST /api/digital-pass/membership-pass— Creates a digital membership pass for a member — the wallet pass a member adds to their phone and presents at a checkpoint — and returns a link from which they download it.
Joining
The membership purchase flow: selling a membership to a member, creating new members with memberships in one call, the earliest date a membership can start, and membership types grouped by tag.
MemberAccount
- Create members with memberships:
POST /api/memberships/add-members-with-memberships— Creates a primary member, optionally a set of linked members alongside them, and the memberships they are buying — all from one signed pricing quote.
Membership
- Create a membership for a member:
POST /api/memberships— Creates memberships for one or more members from a pricing quote, and raises the unpaid sales invoices that pay for them. It is the second step of the joining flow: the members must already exist, and the quote must already have been obtained. - Get earliest start date for membership:
GET /api/memberships/earlieststartdate— Works out the earliest date a membership may start, given the membership types being bought and the site they are being bought at.
MembershipTypesByTagGroup
- Get membership types grouped by tag:
POST /api/memberships/membership-types-by-tag-group— Finds the membership types on sale at a site that carry a given set of tags, and buckets the results by the tags of one chosen tag group.
Members
Everything held against a member: profile and contact details, addresses, consent, identifiers such as cards and key fobs, linked members, memberships, bookings and booking history, attendance (participation) records, documents, medical details, vehicles, saved payment cards, prospect interactions and event logs. To find a member by name or id, see Configuration (Search).
Bookings
- Gets a summary of bookings for a member, including discount information:
GET /api/members/{memberId}/bookings-summary— Assembles, in one call, everything a member's "my bookings" screen needs: their recent past bookings, their upcoming bookings, and the promotion figures behind each.
Consent
- Retrieve a member's consent details:
GET /api/members/{memberId}/consent— Returns everything the platform currently holds about one member's consent: the legal agreements they have signed (online registration consent, privacy policy, terms and conditions, health commitment statement), the marketing and data-processing campaigns recorded against them… - Update member's campaign consent preferences:
PUT /api/members/{memberId}/campaign— Sets which marketing and data-processing campaigns a member has consented to. - Update member's communication channel consent preferences:
PUT /api/members/{memberId}/communication-channels— Sets which communication channels — for example email, SMS, telephone or post — a member has agreed to be contacted through. - Update member's consent details:
PUT /api/members/{memberId}/consent— Records the dates on which a member gave the consents the business is legally required to hold: online consent, privacy policy, terms and conditions, and the health commitment statement.
Contact
- Create emergency contact for member:
POST /api/members/{memberId}/emergency-contacts— Adds one emergency contact to a member — a name, a contact number and an optional description of how they are related. Use it when a member fills in a next-of-kin field at joining, at induction, or when they update their details later. - Delete emergency contact record:
DELETE /api/members/emergency-contacts/{id}— Removes one emergency contact — the counterpart to Create emergency contact for member. Use it when a member withdraws a contact, when a duplicate was created, or when you are replacing a contact outright rather than editing it with Update emergency contact record. - Get member contact details:
GET /api/members/{memberId}/contact-details— Retrieves the email addresses and telephone numbers held for a member, and tells you which of each the member has nominated as their primary. - Get member emergency contacts:
GET /api/members/{memberId}/emergency-contacts— Retrieves the people to ring if something happens to a member at a site. A member can have any number of emergency contacts, or none. - List all of a member's addresses:
GET /api/members/{memberId}/addresses— Returns the addresses held against a member. A member record has exactly two address slots and no more:address1is the member's home address andaddress2is their work address. - Update emergency contact record:
PUT /api/members/emergency-contacts/{id}— Replaces the details of one emergency contact record — the person a centre rings if something happens to the member while they are on site. - Update member address details:
PUT /api/members/{memberId}/addresses— Updates the two postal addresses held against a member.address1is the member's home address andaddress2is their work address; there are no other address slots, despite what the field names might suggest. - Update member contact details using JSON Patch:
PATCH /api/members/{memberId}/contact-details— Updates a member's email addresses and telephone numbers using a JSON Patch document (RFC 6902).
Correspondence
- Get member correspondence history:
GET /api/members/{memberId}/correspondence— Lists the correspondence trail held against a member — reception and office messages, notes staff have left, letters and mail merges sent, calls, tasks, appointments and emails. It is a single mixed feed;typetells you which kind each entry is. - Update member correspondence:
PUT /api/members/{memberId}/correspondence/{all}— Updates one correspondence record — an item of member communication that staff raise, assign to a handler, chase and eventually conclude.
Document
- Create a document for a member:
POST /api/members/{memberId}/documents— Uploads a file you already hold — a signed form, a photo of an ID card, a scanned letter — and files it against a member's record. The request ismultipart/form-dataand must carry exactly two parts:file, the bytes of the document, andjson, a JSON object describing it. - Create a templated document for a member:
POST /api/members/{memberId}/documents/populate-template— Builds a PDF for a member from a template that Gladstone already holds, by stamping your values into the template's form fields. - Generate direct debit mandate document:
POST /api/members/{memberId}/documents/pre-purchase-dd-mandate— Produces the Direct Debit Instruction PDF a member signs when they buy a membership paid by direct debit, and returns the URL of the generated file. The document is unconfirmed: it records the mandate the member is agreeing to, before any invoice has been paid. - Retrieve a document associated with a member:
GET /api/members/{memberId}/documents/{documentId}— Returns the metadata for one document held against a member, together with a short-lived download link for the file itself. - Retrieves all documents associated with a member:
GET /api/members/{memberId}/documents— Lists the documents held against a member — contracts, health forms, direct debit mandates, uploaded photos of ID and so on — as metadata only.
Favourite
- Create member favourite:
POST /api/members/{memberId}/favourites— Saves one favourite against a member — the member's preferred site, or an activity they want to keep to hand — so that an app can pre-select it later. Each call stores a single favourite; repeat the call to store several. - Delete member favourite:
DELETE /api/members/{memberId}/favourites/{favouriteId}— Removes one saved favourite from a member — in practice a site or an activity, since those are the only kinds the create endpoint will store. - Get member favourite by ID:
GET /api/members/{memberId}/favourites/{favouriteId}— Retrieves one favourite belonging to a member — its type and the value that was favourited. - Get member favourites:
GET /api/members/{memberId}/favourites— Lists everything a member has marked as a favourite — their home site, the activities they care about, and whatever else the operator has configured as a favourite type. Use it to personalise what you show a member when they open your app.
FavouriteType
- Get all favourite types:
GET /api/members/favourite-types— Lists the kinds of thing a member is allowed to mark as a favourite — for example a site or an activity. This is tenant reference data, not member data: the list is the same for every member, and it is defined by the operator, so do not hard-code the ids or the names.
GetAllConsent
- Get all member consent profiles:
GET /api/members/consent/profiles— Bulk-exports what every member has and has not agreed to: the legal agreements they have signed, the marketing campaigns they have opted into, the data-processing campaigns they have accepted, and the channels they are happy to be contacted on.
Identifier
- Create member identifiers:
POST /api/members/{memberId}/identifier— Attaches one or more identifiers to an existing member. An identifier is the value a member presents at a door, turnstile or kiosk — the number encoded on an access card, wristband, key fob or digital token. You send an array, so several can be added in one call. - Delete additional identifier:
DELETE /api/members/identifier/{identifierId}— Removes an additional identifier — an access card, wristband, fob or token that is not the member's primary card — by its value alone. - Delete member identifier:
DELETE /api/members/{memberId}/identifier/{identifierId}— Removes one identifier from a member. An identifier is the physical or virtual credential a member presents at a barrier, kiosk or reader — an access card, keyfob, smartband or similar. A member has at most one primary identifier and any number of additional identifiers. - List all of a member's identifiers:
GET /api/members/{memberId}/identifier— Lists everything a member can present to identify themselves at a site: access cards, smartbands, keyfobs and digital tokens.
LinkMember
- Accept a link request from a primary member:
PUT /api/members/{secondaryMemberId}/link-requests/{primaryMemberId}— Accepts a pending link request that one member has sent to another, joining the two members into a linked group and sharing the sender's group memberships with the recipient. - Create a new linked member for a primary member:
POST /api/members/{memberId}/linked-members— Creates a brand-new member from scratch and attaches them to an existing primary member in a single call. Reach for this when adding someone who has no record yet — a child or partner being added to an existing account. - Unlink secondary member from primary member:
DELETE /api/members/{primaryMemberId}/links/{secondaryMemberId}— Breaks the link between a primary member and one of the members linked to them, and removes that member's access to the primary's shared memberships.
LinkRequest
- Delete link request:
DELETE /api/members/{memberId}/link-requests/{linkRequestId}— Removes a single pending link request. This is how a sender withdraws a request they raised and how a recipient rejects one they were sent — the same call serves both, and there is no separate "reject" endpoint. - Get pending link requests for member:
GET /api/members/{memberId}/link-requests/pending— Lists the member-link invitations involving one member that are still awaiting an answer. - Send link request to another member:
POST /api/members/{memberId}/link-requests— Invites another existing member to be linked to this one, so the two accounts can share memberships and book for each other. The invitation is pending until the other member accepts it with Accept a link request from a primary member; nothing is linked by this call alone.
Links
- Create member links:
POST /api/members/{memberId}/links— Joins members that already exist into a single linked group, with the member in the path as the primary and every member inlinkedMemberIdsas a secondary. - Delete member links:
DELETE /api/members/{memberId}/links— Breaks the link between a secondary member and the primary member they are attached to. A link joins one primary member to one or more secondary members, so that the primary can act on their behalf — for example making bookings for a partner or an adult child. - List all of a member's linked members:
GET /api/members/{memberId}/links— Returns the member's link group: who they are linked to, and who may book for whom. - Update member link details:
PUT /api/members/{memberId}/links— Changes how a member participates in a family or group link: whether they are the primary member, whether they may book on behalf of the members linked to them, whom they book for by default, and whether linked members may book on their behalf.
MedicalDetails
- Create a medical condition record for a member:
POST /api/members/{memberId}/medical-details— Adds one medical condition to a member's record: a condition type drawn from the tenant's configured list, plus an optional free-text note. Use it when a member declares a condition on a health questionnaire, at induction, or when staff record one during a conversation. - Delete a member's medical condition record:
DELETE /api/members/medical-details/{medicalDetailId}— Removes one medical condition record from a member — the counterpart to Create a medical condition record for a member. Use it when a member says a condition no longer applies, when a record was entered in error, or when you are honouring an erasure request. - Retrieve a member's medical information:
GET /api/members/{memberId}/medical-details— Returns the medical conditions recorded against one member: for each, the condition type it was filed under and any free-text note held with it. - Update a member's medical condition record:
PUT /api/members/medical-details/{medicalDetailId}— Changes an existing medical condition record — the pairing of a condition type and a free-text note that a centre holds against a member so that staff know about it before the member exercises.
Member
- Apply shared memberships to linked member:
POST /api/members/{primaryMemberId}/memberships/link-memberships-to-member/{secondaryMemberId}— Issues the secondary member their own copy of each of the primary member's shareable memberships. Only memberships whose type is flagged to apply to links are copied; anything the primary holds that is not flagged that way is left alone. - Delete a member's booking:
DELETE /api/members/{memberId}/bookings/{bookingId}— Takes a member off a booking. This is a deletion, not a status change: the member's place on the booking, and their entry in the booking's party list, are removed. Nothing is left behind marked "cancelled", and there is no endpoint to undo it — the member has to book again. - Delete unpaid memberships for a member:
DELETE /api/members/{memberId}/memberships/unpaid— Abandons a membership purchase that was never paid for. Use it when a member starts a join or renewal, an invoice is raised, and payment is then abandoned — the half-finished records would otherwise sit against the member forever and confuse later purchases. - Get all member memberships with pagination:
GET /api/members/memberships— Bulk-exports the memberships held across the whole member base — what each member has bought, when it started and ends, who is paying for it and how. - List all past bookings (v1.0):
GET /api/members/{memberId}/past-bookings— Returns the bookings a member has already taken part in, as a plain JSON array — no envelope, no total count, no paging. - List all past bookings with pagination (v2.0):
GET /api/members/v2/{memberId}/past-bookings— Returns a member's past bookings one page at a time. A booking counts as past when its start time falls before the upper bound (dateTimeTo, which defaults to the moment you call), so a session that has started but not yet finished is included. - Remove shared membership access between linked members:
DELETE /api/members/{primaryMemberId}/memberships/linked-memberships/{secondaryMemberId}— Undoes Apply shared memberships to linked member. When a primary member shares a membership with someone linked to them, the linked member receives their own subscription record that points back at the primary's. This endpoint finds those records and deletes them outright. - Retrieve member booking restrictions:
GET /api/members/{memberId}/bookings-restrictions— Answers one question before you start a booking: may this member book, and — when you name an activity — do their memberships satisfy the restriction the operator has placed on it. - Retrieve non-member booking restrictions:
GET /api/members/bookings-restrictions— Answers whether somebody with no member record — a walk-in, a guest, a visitor booking on the day — may book a particular activity.
MemberEventLogs
- Get member event logs:
GET /api/members/{memberId}/event-logs— Returns the audit trail for one member: an entry for every recorded change to their record, saying which field changed, what it changed from and what it changed to.
Memberships
- Get member memberships and payment information:
GET /api/members/{memberId}/memberships— Returns one member's memberships together with what they will be charged next. - Cancel a membership for the paying member:
POST /api/members/{memberId}/memberships/{membershipRef}/cancel— Cancels a membership on the instruction of the member who pays for it — the action behind a "cancel my membership" button in a self-service account area.
Participation
- List all member participation records:
GET /api/participation— Returns a paged, cross-site record of member attendance at your sites in a date range: the classes and other booked activities members were marked as attending, their entry swipes, and the sales that count as participation.
Personalisation
- Create member personalisation:
POST /api/members/{memberId}/personalisation— Stores one preference against a member as a key and value pair, and returns the id of the record it created. - Get member personalisation by key:
GET /api/members/{memberId}/personalisation/{personalisationKey}— Reads one of a member's stored preferences by its key. Personalisation is a simple key-and-value store the platform keeps per member — the most common use is the member's chosen language, for example the keyLANGUAGEholdingen-GB. - Update member personalisation:
PUT /api/members/{memberId}/personalisation/{personalisationID}— Changes the value of one personalisation record on a member. A personalisation record is a typed preference held against the member, addressed by a type key.
Picture
- Get member picture:
GET /api/members/{memberId}/base64-member-picture— Retrieves a member's profile photograph — the one staff see at reception to confirm who is presenting a card — together with the member's photo upload history and the upload limits that apply to them. - Update member picture:
PUT /api/members/{memberId}/member-picture— Stores a member's profile photograph. There is one picture per member, so this call adds it the first time and replaces it thereafter.
Profile
- Confirm a previously unconfirmed member creation:
POST /api/members/{memberId}/confirm— Marks a member record that was created in a pending state as complete, so that the member is no longer treated as an abandoned sign-up. - Create a new member with a basic profile:
POST /api/members/profile— Creates a new member record with a basic profile — name, site, and optionally date of birth, title, home email, status, price level, join date and preferred language — and returns the new member's id. - Delete a member and all related records:
DELETE /api/members/{memberId}/profile— Removes an unconfirmed member and the records hanging off them. - List all member profiles with filtering and pagination:
GET /api/members/profiles— Returns member profiles in pages, for integrations that need to mirror or export an operator's member base rather than look up one member. - Retrieve a member's basic profile details:
GET /api/members/{memberId}/profile— Returns one member's profile, addressed by member ID: who they are, which centre they belong to, and — when you ask for them — their addresses, contact details, current status and subscriptions. - Retrieve a member's profile progress:
GET /api/members/{memberId}/profile-progress— Returns the profile completion percentage recorded against one member — a single number between0and100, intended for onboarding user interfaces: a progress bar, or a prompt asking the member to fill in the details they are missing. - Update a member's basic profile details:
PUT /api/members/{memberId}/profile— Updates the core identity fields on a member record — name, title, date of birth, email, join date — and the three administrative codes that classify the member:siteId,statusIdandpriceLevelId. - Update a member's profile progress:
PUT /api/members/{memberId}/profile-progress— Records how complete a member considers their profile to be, as a single percentage.
ProspectInteractions
- Create a prospect interaction:
POST /api/members/prospects/{memberId}/interactions— Records one interaction — a call, a task or an appointment — against a prospect. - Delete a prospect interaction:
DELETE /api/members/prospects/{memberId}/interactions/{id}— Removes one prospect interaction — a recorded call, task or appointment — from a member. - Get a member's prospect interactions:
GET /api/members/prospects/{memberId}/interactions— Lists the sales-follow-up activity recorded against a member: the calls staff have made, the tasks they have set themselves, and the appointments they have booked in. This is the CRM trail behind a prospect, not the member's bookings or attendance. - Update a prospect interaction:
PUT /api/members/prospects/{memberId}/interactions/{id}— Updates an existing prospect interaction — a logged contact with a prospective member, such as a call, a tour or a follow-up, recorded against their record while sales staff work the lead.
ProspectLookups
- Get the prospect interaction outcomes for an interaction type:
GET /api/members/prospects/interaction-outcomes/{type}— Returns the outcomes you are allowed to record against one prospect interaction type. A prospect is a sales lead — someone being followed up as a potential joiner — held as a member record and identified by a member id. The outcome is how the call, task or appointment ended. - Get the prospect interaction sub types for an interaction type:
GET /api/members/prospects/interaction-subtypes/{type}— Returns the sub types available under one prospect interaction type. A prospect is a sales lead — someone being followed up as a potential joiner — held as a member record and identified by a member id. - Get the prospect interaction types:
GET /api/members/prospects/interaction-types— Returns the interaction types you can record against a prospect. A prospect is a sales lead — someone being followed up as a potential joiner — held as a member record and identified by a member id like any other member.
ProspectNeedsAnalysis
- Get a member's needs-analysis comments:
GET /api/members/prospects/{memberId}/needs-analysis— Retrieves the free-text needs-analysis note held against a member. A needs analysis is the conversation a member of staff has with a prospect about their goals and requirements; the note is what the staff member wrote down. - Save a member's needs-analysis comments:
PUT /api/members/prospects/{memberId}/needs-analysis— Saves the needs-analysis note held against a member — the free-text record of what a prospective member said they want from a gym or centre, captured during a sales conversation.
PushNotification
- Create or update member push notification token and app bundle ID:
PUT /api/members/{memberID}/push-notification-token— Records the push notification token of a member's device so the platform can send notifications to it. Call it after your app obtains or refreshes a device token, and after the member signs in. - Delete member push notification token:
DELETE /api/members/{memberID}/push-notification-token— Unregisters a member's device from push notifications by deleting the stored device token. Call this when a member signs out of your app, uninstalls it, or opts out of notifications — otherwise the platform keeps sending to a token that is no longer valid. - Get member push notification tokens:
GET /api/members/{memberID}/push-notification-token— Lists every device registration a member currently holds for push notifications. A member can be registered on several devices and in several apps at once, so this typically returns more than one entry.
ScheduledActions
- Delete member scheduled action:
DELETE /api/members/{memberId}/scheduled-actions/{all}— Cancels one scheduled action belonging to a member. A scheduled action is a change to the member that has been diarised for a future date — a move to a different price level, a change of status, or a transfer to a different site. - Get member future scheduled actions:
GET /api/members/{memberId}/scheduled-actions— Lists the changes already diarised against a member that have not happened yet — a move to a different price level, a change of status, or a transfer to another site. - Update member scheduled actions:
PUT /api/members/{memberId}/scheduled-actions— Reschedules or retargets existing scheduled actions — the future-dated changes that move a member to a different price level, status or site on a given day.
UserField
- Get all member user fields with pagination:
GET /api/members/user-fields— Bulk-exports the custom fields held against members. User fields are the extra data points an operator defines for themselves — a marketing source, a medical flag, a staff-only note — beyond the standard member profile. - List all of a member's user fields:
GET /api/members/{memberId}/user-fields— Returns the values a member holds in the custom fields your organisation has defined. - Update member user fields:
PUT /api/members/{memberId}/user-fields— Sets the values of a member's user fields — the custom fields each tenant defines for itself, such as a referral source, a locker number or a linked staff member.
VehicleDetails
- Create vehicle record for member:
POST /api/members/{memberId}/vehicle-details— Registers a vehicle registration against a member, so the plate can later be resolved back to the members holding it through Get members by vehicle registration. A member may hold several vehicles; each call adds one. - Delete vehicle record:
DELETE /api/members/vehicle-details/{vehicleId}— Removes one vehicle registration held against a member — for example when a member sells a car, or a registration was recorded wrongly. Vehicle registrations are used for car park and barrier access, so deleting one withdraws that vehicle's access. - Get member vehicle details:
GET /api/members/{memberId}/vehicle-details— Lists the vehicle registrations recorded against a member. These are what a car park barrier or number-plate reader matches on, so this is the list that decides whether a member's car gets in. - Get members by vehicle registration:
GET /api/members/{vehicleRegistration}/members-details— Looks up which members have a given vehicle registration recorded against their account. This is the reverse of Get member vehicle details: you have a number plate — read off a barrier camera, typed in at a reception desk — and you want to know whose it is. - Update vehicle record:
PUT /api/members/vehicle-details/{vehicleId}— Changes the registration number held on one vehicle record. A vehicle record links a number plate to a member so that car-park and barrier systems can recognise them on arrival.
Wallet
- Add or verify card in member's wallet:
POST /api/members/{memberId}/wallet/card— Registers a card against a member so it can be charged later without the member re-entering it. It does this by running a zero-amountVERIFYtransaction with the card processor behind GladstonePay (CardStream), which stores the card in the member's wallet. - Get member's default recurring payment card:
GET /api/members/{memberId}/rcp-card— Returns the card a member has designated as their default for recurring card payments (RCP) — the card that repeat, automated billing is taken from. - Get member's wallet details:
GET /api/members/{memberId}/wallet/gladstonepay— Lists every payment card held in a member's wallet at the payment provider. - Remove card from member's wallet:
DELETE /api/members/{memberId}/wallet/gladstonepay/{cardId}— Removes a stored card from a member's wallet so it is no longer offered as a saved payment method. A successful call returns204 No Contentwith no body. - Set member's default recurring payment card:
PUT /api/members/{memberId}/rcp-card— Nominates one of the cards already saved in a member's wallet as the card to charge for recurring payments — membership fees collected by card rather than direct debit.
Payments
Taking payment for sales invoices, and the payment methods, payment providers, EFT systems and collection interfaces configured for your tenant.
CollectionInterface
- List all collection interfaces:
GET /api/financial/collection-interfaces— Lists the collection interfaces — the fixed set of underlying tender mechanisms a payment method can be built on. Cash handled manually, a Chip and PIN terminal, a cashless purse, loyalty points, invoicing and direct debit are each a separate collection interface.
EftSystem
- Get all EFT systems:
GET /api/financial/eft-systems— Lists the Electronic Funds Transfer (EFT) systems available to the operator.
Invoice
- Pays for sales invoices using a specified payment provider and can handle payments with and without 3D Secure…:
POST /api/payment/pay— Takes card payment for one or more sales invoices that already exist, and then marks them as paid. It is the last step of a purchase: create the invoices first, then call this.
PaymentMethods
- Create a new payment method:
POST /api/financial/payment-methods— Creates a payment method — a tender type the operator can accept, such as cash, a card scheme, a direct debit arrangement or loyalty points. You choose the id yourself; the platform does not generate one. - Delete a payment method:
DELETE /api/financial/payment-methods/{id}— Permanently removes a payment method. This is a hard delete — the record is removed, there is no soft delete and no undo. - List all payment methods:
GET /api/financial/payment-methods— Lists every payment method configured for the operator, active and inactive alike. A payment method is a tender type — cash, a card scheme, a direct debit arrangement, loyalty points — and it is what a sale is recorded against. - Retrieve a payment method:
GET /api/financial/payment-methods/{id}— Retrieves one payment method by its id. A payment method is a tender type an operator accepts — cash, a card scheme, a direct debit arrangement, loyalty points — and it is what a sale is recorded against. - Update a payment method:
PUT /api/financial/payment-methods/{id}— Replaces the configuration of an existing payment method.
PaymentProvider
- Get all payment providers:
GET /api/financial/payment-providers— Lists the payment providers known to the operator. A payment provider is the gateway that actually takes card payments — the thing named inpaymentMethods[].paymentProviderwhen you call Pay for sales invoices. - Get payment provider by ID:
GET /api/financial/payment-providers/{paymentProviderId}— Retrieves one payment provider by id.
Users
Staff (back-office) user accounts: creating, updating and deleting them, their passwords and their preferences.
User
- Creates a new administrative user account in the system:
POST /api/users— Creates a staff (back-office) user account for the tenant. These are the people who operate the leisure centre — not members or customers — and the account created here is what they sign in with. - Creates or updates a user preference for the currently logged-in user:
POST /api/users/preference/{preferenceId}— Stores one named preference value against the staff (back-office) user your access token belongs to. It is an upsert: the first call for a given preference name creates the value and returns201 Created, and every later call overwrites it and returns204 No Content. - Deletes a specific user preference for the currently logged-in user:
DELETE /api/users/preference/{preferenceId}— Removes one named preference value for the staff (back-office) user your access token belongs to, so that Retrieves a specific user preference for the currently logged-in user goes back to returningnulland your client falls back to its own default. - Permanently deletes a user account from the system:
DELETE /api/users/{username}— Retires a staff (back-office) user account so it can no longer be used. Returns204 No Contentwith no body. There is no undo through this API, and the username is never released — plan for that before you call it. - Retrieves a specific user preference for the currently logged-in user:
GET /api/users/preference/{preferenceId}— Reads back one named preference value for the staff (back-office) user your access token belongs to, exactly as Creates or updates a user preference for the currently logged-in user stored it. - Retrieves all administrative users configured in the system:
GET /api/users— Returns every staff (back-office) user for your tenant — the people who operate the leisure centre, not members or customers. - Retrieves detailed information for a specific administrative user:
GET /api/users/{username}— Returns one staff (back-office) user by sign-in name. Staff users are the people who operate the leisure centre, not members or customers. - Updates a user's password reset flag for account security management:
PUT /api/users/{username}/reset-password-flag— Sets or clears the flag that forces a staff (back-office) user to choose a new password at their next sign-in. Returns204 No Contentwith no body. - Updates the details and settings for a specific administrative user:
PUT /api/users/{username}— Replaces the profile, site assignment, role and account-status flags of one staff (back-office) user. Returns204 No Contentwith no body. - Updates the password for a specific user account:
PUT /api/users/{username}/password— Sets a new password on a staff (back-office) user account. Returns204 No Contentwith no body. - Updates user preferences and application settings for a specific user:
PUT /api/users/{username}/preferences— Sets the avatar and default site of a named staff (back-office) user. Returns204 No Contentwith no body.
Configuration
Tenant setup: sites and site groups, activities and activity groups, resource products, membership types and groups, price levels, timebands, discounts, promotions and promo codes, consent campaigns, integrators and their API keys, lost cards and translations. Also search for members, products and activities by text.
Activities
- Get all activities with optional site filtering:
GET /api/configuration/activities— Lists the activities configured across the estate — the bookable things a member can take part in, such as a swim, a badminton court hire or a fitness class — optionally narrowed to particular sites. - Update an activity configuration:
PUT /api/configuration/activities/{id}— Rewrites the configurable details of one activity: its display names, its booking party size limits, the activity group it belongs to, its localised text and its tags.
ActivitiesByTags
- Get activities by tags:
GET /api/configuration/activities-by-tags— Returns activities grouped under the tags you ask for. Tags are the operator-defined labels used to categorise activities — "Swimming", "Family", "Racket sports" — and this endpoint is how a consumer-facing site turns a category the user picked into the activity identifiers it…
Activity
- Get activity details:
GET /api/configuration/activity/{id}— Returns the full configuration of one activity — its names and translations, what kind of activity it is, its participant limits, its image and the tags it carries. Use it after listing activities or fetching them by tag, when you have an identifier and need the detail behind it. - Update activity image:
PUT /api/configuration/activity/{id}/image— Uploads an image file and points an existing activity at it, replacing whatever image the activity was previously using. The image is what member-facing booking screens and activity listings show for that activity.
ActivityGroup
- Create activity group:
POST /api/configuration/activity-groups— Creates an activity group — a label used to categorise activities so they can be listed, filtered and administered together. An activity group is a flat record: an identifier, a description and a free-text comment. - Delete activity group:
DELETE /api/configuration/activity-groups/{all}— Removes an activity group permanently. This is a hard delete — the group is removed outright, and there is no active or deleted flag on an activity group, so there is no deactivate alternative and no way to recover the record other than creating it again with Create activity… - Get activity group by ID:
GET /api/configuration/activity-groups/{all}— Returns one activity group and the activities filed under it. An activity group is the operator-defined family an activity belongs to — "Racket sports", "Swimming lessons" — and it is the natural way to render a booking menu one level up from individual activities. - Get all activity groups:
GET /api/configuration/activity-groups— Lists every activity group configured for the tenant, each with the activities that belong to it. An activity group is an operator-defined folder used to organise activities (for example "Racquet Sports", "Swimming") so they can be presented as a two-level list. - Update activity group:
PUT /api/configuration/activity-groups/{all}— Changes the display text held against an existing activity group. Activity groups are the categories activities are filed under, so the text you set here is what a user sees when activities are grouped for browsing or selection.
Amenities
- Retrieves all site amenities with their configuration details:
GET /api/configuration/site-amenities— Lists every amenity defined in the environment — the vocabulary of conveniences a site can advertise, such as parking, Wi-Fi or a cafe. This is the master list, not a per-site list: it tells you which amenities exist and what each is called, but not which sites offer them.
Authentication
- Delete an Idp group mapping.:
DELETE /api/configuration/authentication/consumer-sso-idp-groups/{id}— Removes one consumer SSO IdP group mapping — the record that ties a group name from your external identity provider to a Gladstone price level and site. Once it is gone, that IdP group no longer resolves to a price level. - Get all single sign-on IdP group mappings:
GET /api/configuration/authentication/consumer-sso-idp-groups— Lists the rules that decide what a consumer gets when they sign in through an external identity provider. Each mapping says: members who arrive carrying groupXfrom the IdP are placed on price levelYat siteZ. - Update IdP group mappings list.:
PUT /api/configuration/authentication/consumer-sso-idp-groups— Replaces the whole set of consumer single sign-on IdP group mappings in one call. Each mapping ties a group in your external identity provider to a price level at a site, so members who arrive through SSO in that IdP group are automatically assigned that price level.
BankDetails
- Create bank details:
POST /api/configuration/bank-details— Creates a bank record — a sort code with the bank's name, branch address and telephone number. - Delete bank details:
DELETE /api/configuration/bank-details/{sortCode}— Removes a bank from the tenant's list of banks — the reference record holding a sort code together with the bank's name, branch and address. This is a hard delete: the bank is removed outright. - Get all bank details:
GET /api/configuration/bank-details— Lists the banks the operator has recorded, keyed by sort code. - Get bank details by sort code:
GET /api/configuration/bank-details/{sortCode}— Retrieves one bank record — its name, branch and postal address — from your tenant's own bank list. - Update bank details:
PUT /api/configuration/bank-details/{sortCode}— Rewrites a stored bank record — the name, branch and postal address held against a UK sort code. These records are reference data used when direct debit details are captured, not a member's own bank account.
BookingDiscounts
- Lists all booking discounts for a given activity and date:
GET /api/configuration/booking-discounts— Returns the multi-person booking discounts available for one activity on one date: for each discount, the combined price and the combinations of price levels that qualify for it. - Lists booking discount usage records with optional filtering and pagination:
GET /api/configuration/booking-discount-usage— Returns a history of booking discounts that have actually been taken: one record per discounted booking line, with the promotion code used, the price before and after the discount, and the member and booking it applied to.
CancellationReasons
- List all cancellation reasons:
GET /api/configuration/cancellation-reasons— Returns the operator's list of reasons a booking may be cancelled — the picklist a member of staff chooses from when they cancel something, and the picklist your integration must present if it cancels on their behalf.
CommunicationChannel
- Create a new communication channel:
POST /api/configuration/consent/communication-channels— Creates a communication channel — the medium (email, SMS, post and so on) that a member's consent is recorded against. Channels are tenant-wide; a member consent record pairs one channel with one campaign. - Delete a communication channel:
DELETE /api/configuration/consent/communication-channels/{channelId}— Removes a communication channel — the medium a member consents to be contacted through, such as email or SMS — from consent configuration. - Get all configured communication channels:
GET /api/configuration/consent/communication-channels— Lists the communication channels a member can give or withhold consent for — email, post, SMS and so on. Call it once at start-up to build a consent preferences screen, and use thechannelIdvalues it returns wherever the consent endpoints ask for a channel.
CostCentre
- Create cost centre:
POST /api/configuration/cost-centres/— Creates a cost centre — the top-level bucket that financial postings are attributed to. Departments hang off cost centres, so create the cost centre first and then reference itsidwhen calling Create department. - Delete cost centre:
DELETE /api/configuration/cost-centres/{id}— Removes a cost centre. It is permanently deleted: there is no active or deleted flag on a cost centre, and so no deactivate alternative — to reinstate one you create it again with Create cost centre. - Get all cost centres:
GET /api/configuration/cost-centres/— Lists the cost centres the operator has configured. A cost centre is the top level of the operator's financial coding structure: departments sit beneath it, each department belonging to exactly one cost centre, and financial postings are attributed through that hierarchy. - Get cost centre by ID:
GET /api/configuration/cost-centres/{id}— Returns one cost centre. A cost centre is the upper level of the operator's two-level financial reporting structure: each department belongs to exactly one cost centre, and a department cannot exist without one. - Update cost centre:
PUT /api/configuration/cost-centres/{id}— Changes the description or the external reference of an existing cost centre. Cost centres are the top level of the financial reporting structure: departments are attached to a cost centre, and a cost centre with departments attached cannot be deleted.
CreditPlan
- Creates a new credit bundle or plan for an environment:
POST /api/configuration/credits— Grants an environment a pool of email and SMS credits, which are then drawn down as messages are sent.planIddecides which of two quite different things happens: - Retrieves all communication credit plans for a specific environment:
GET /api/configuration/communication-plans/{environmentId}— Lists the communication credit allocations held by one environment — the bundles of emails and SMS messages that environment may send. Use it to show what has been allocated and when it runs out. - Retrieves all default communication credit plans available in the system:
GET /api/configuration/default-communication-plans— Lists the standard communication credit plans the platform offers — the named bundles of emails and SMS messages, with their audience and site limits, that an environment's allocation can be based on. - Updates an existing credit bundle or plan for an environment:
PUT /api/configuration/credits— Changes a recurring communication credit plan — the allowance of email and SMS credits an environment gets for sending member communications.
Cultures
- Get all available cultures:
GET /api/translations/cultures— Lists the cultures (language/locale pairs) the tenant has available for translated content. Use it to populate a language selector, and to learn whichcodevalues the translation endpoints will accept when you read or write translated text.
DataProcessingCampaigns
- Create a new data processing campaign:
POST /api/configuration/consent/data-processing— Creates a data-processing campaign — a named purpose that members can grant or refuse consent for, covering data collection and processing rather than marketing. Consent is recorded per member as a campaign and channel pair, so you also need at least one communication channel. - Delete a data processing campaign:
DELETE /api/configuration/consent/data-processing/{all}— Removes a data-processing campaign — a named purpose members grant or refuse consent for — from consent configuration. The final segment of the path is the campaign identifier returned when you created the campaign. - Get all data processing campaigns:
GET /api/configuration/consent/data-processing— Lists the data processing campaigns configured for the tenant. A data processing campaign is a named purpose for which the operator processes member data, and against which a member records a consent decision. - Update a data processing campaign:
PUT /api/configuration/consent/data-processing/{all}— Switches a data processing campaign on or off. A data processing campaign is a named purpose for which members give or withhold consent to have their data processed; the set of campaigns configured for your tenant is returned by Get all data processing campaigns.
Departments
- Create department:
POST /api/configuration/departments— Creates a department and attaches it to an existing cost centre. Departments are the level at which sales and financial postings are categorised, so most products and services eventually point at one. - Delete department:
DELETE /api/configuration/departments/{id}— Removes a department — the financial grouping that products and activities are booked against, and which links them to a cost centre. - Get all departments:
GET /api/configuration/departments— Lists the departments the operator has configured, each with the cost centre it belongs to. - Get department by ID:
GET /api/configuration/departments/{id}— Returns one department, together with the cost centre it belongs to. - Update department:
PUT /api/configuration/departments/{id}— Changes a department's description, its external reference, or the cost centre it reports to. Departments are the second level of the financial reporting structure — each department belongs to a cost centre, and products and charges are attributed through them.
Discounts
- Create a discount:
POST /api/configuration/discounts— Creates percentage discounts against one or more membership types. The endpoint creates one discount per membership type inmembershipTypeIds, so a request naming three membership types creates three discounts and returns three identifiers. - Retrieves all active discounts with their configuration details:
GET /api/configuration/discounts— Lists the discounts currently switched on for membership types, with the label to show the customer and a flag saying whether the discount is one an online journey can actually apply. - Update a discount:
PUT /api/configuration/discounts/{id}— Rewrites a membership discount: which membership type it applies to, the three percentage rates it offers, how long the regular rate runs for, the marketing text shown with it, whether it is live, and whether it is restricted to one site.
DiscountSiteGroup
- Create discount site group mapping:
POST /api/configuration/discount/sitegroups— Records which site groups a membership discount applies to. The discounts involved are the percentage discounts held against membership types — the ones created by Create a discount — and a site group is a named collection of sites. - Get discount site group mapping by discount ID:
GET /api/configuration/discount/sitegroups/{discountId}— Returns the site groups that have been mapped to a membership-type discount. A site group is an operator-defined collection of sites, used across the platform to scope configuration to a subset of an operator's estate. - Update discount site group mapping:
PUT /api/configuration/discount/sitegroups— Sets which site groups each of a set of discounts is restricted to. A site group is a named collection of sites; mapping a discount to a site group limits that discount to the sites in it.
DocumentType
- Creates a document type:
POST /api/configuration/document-types— Defines a new category that member documents can be filed under. A document type is a definition only — creating one does not attach any file to a member; you upload files against an existing type through the member document endpoints. - Deletes a document type:
DELETE /api/configuration/document-types/{documentTypeId}— Deletes a document type — the category assigned to member documents such as proof of address or a direct debit mandate. It is deleted permanently; there is no inactive flag and no undo. - Returns a specific document type based on the ID:
GET /api/configuration/document-types/{documentTypeId}— Reads a single document type by its id — the name, key and flags behind an id you already hold, typically one recorded against a member's document. - Returns all document types:
GET /api/configuration/document-types— Lists the document types configured for the tenant — the categories a member document can be filed under, such as a photo ID, a medical certificate or a Direct Debit mandate. - Updates a document type:
PUT /api/configuration/document-types/{documentTypeId}— Updates a document type — the category a file uploaded against a member is filed under, such as a medical certificate or a signed waiver.
EGYM
- List EGYM sites:
GET /api/configuration/egym/sites— Lists the sites enabled for the EGYM integration, which creates and updates your members' accounts at EGYM, a third-party provider. - Create EGYM sites:
POST /api/configuration/egym/sites— Enables one or more sites for the EGYM integration, storing each site's EGYM API key and scheduling its initial sync of members to EGYM. Send every site you want to add in one request: the call is all-or-nothing. - Delete EGYM site:
DELETE /api/configuration/egym/sites/{siteId}— Removes a site from the EGYM integration, so its members are no longer sent to EGYM. If the site's initial sync is still scheduled, running or paused, it is stopped. The site's stored EGYM API key is discarded. - List EGYM membership type groups:
GET /api/configuration/egym/membership-type-groups— Lists the membership type groups enabled for the EGYM integration. Only members with an active membership in one of these groups, at a site enabled for EGYM, are sent to EGYM. - Update EGYM membership type groups:
PUT /api/configuration/egym/membership-type-groups— Sets which membership type groups qualify members for the EGYM integration. Only members with an active membership in one of these groups, at a site enabled for EGYM, are sent to EGYM. - List EGYM sync errors:
GET /api/configuration/egym/sync-errors— Lists members whose records failed to sync to EGYM and still need action, newest first, with each member's name and email address and the reason for the failure.
ExternalWebLinks
- Create external web link:
POST /api/configuration/externalweblinks— Creates one external web link — a stored URL that the tenant's front-of-house and member-facing applications render as a link or tile. Each link hangs off a link type, which is the slot in the host application the link fills. - Delete external web links:
DELETE /api/configuration/externalweblinks— Permanently removes one or more external web links. This is a hard delete — the links are removed outright, and there is no undo and no deleted flag to reverse. - Get all external web links:
GET /api/configuration/externalweblinks— Lists every external web link the operator has configured. An external web link is a URL surfaced in the operator's consumer-facing app — typically a tile or menu item pointing at their own website, a partner site or a booking page — together with the image, target behaviour and… - Get external web link by ID or link type ID:
GET /api/configuration/externalweblinks/{id}— An external web link is an operator-configured outbound link — a destination URL, display text and an optional image — that the consumer-facing apps render as a navigation entry or tile. - Update external web link:
PUT /api/configuration/externalweblinks/{id}— Rewrites one external web link — a configured link out to another site, shown to users under a link type that groups related links together.
ExternalWebLinkType
- Get all external web link types:
GET /api/configuration/externalweblinktypes— Lists the categories that external web links can be filed under. An external web link is a URL the operator surfaces in their consumer-facing app — a tile on a home screen, for example — and its type says where in the app it appears.
Facilities
- Retrieves all site facilities with their configuration details:
GET /api/configuration/site-facilities— Lists every facility defined in the environment — the vocabulary of physical spaces a site can advertise, such as a pool, a gym or a squash court.
FormProfile
- Create form profile:
POST /api/configuration/form-profiles— Creates a form profile — a named, reusable definition of which sections and which individual fields a member-facing data-capture form shows. - Delete form profile:
DELETE /api/configuration/form-profiles/{formProfileId}— Permanently removes a form profile — the reusable definition of a sign-up or account form. This is a hard delete: the profile is removed outright, there is no deleted or inactive flag, and the profile cannot be recovered. - Get all form profiles:
GET /api/configuration/form-profiles— Lists the form profiles configured for the tenant. A form profile is a named, operator-designed form definition — the set of fields, labels and rules used at a particular point in a journey, such as the sign-up form or the account-details form. - Get form profile by ID:
GET /api/configuration/form-profiles/{formProfileId}— A form profile is an operator-defined description of a member-facing form: which sections appear, and which fields inside each section are shown. Operators maintain them so that the sign-up and account-management screens can be changed without a code release. - Update form profile:
PUT /api/configuration/form-profiles/{formProfileId}— Rewrites a form profile: its name, and the whole definition of which sections and fields appear on the form it drives.
FormType
- Get all form types:
GET /api/configuration/form-profile-types— Lists the form types available in the tenant. A form type identifies a place in a journey where an operator-designed form is used — sign-up, account management, and so on.
Gender
- Get a specific gender option by ID:
GET /api/configuration/genders/{genderId}— Returns one gender option — the small reference list that member titles and member profiles are categorised against. - Get all gender options:
GET /api/configuration/genders— Lists the gender options a member record can be given. Use it to populate the gender field on a registration or profile form, and to translate the gender value on a member record back into a label.
Image
- Retrieves a list of activity images from public storage blob with optional pagination.:
GET /api/images/activities— Lists the activity images your tenant has uploaded to public image storage, each with the URL that serves it. Use it to let a user pick an existing image rather than uploading a new one, or to resolve the image referenced by an activity. - Retrieves a specific activity image by exact file name.:
GET /api/images/activities/{fileName}— Confirms that one activity image exists and returns the URL that serves it. The match is on the exact file name, extension included — there is no searching or partial matching, so use List activity images if you do not already know the name. - Uploads an activity image to public storage blob.:
POST /api/images/activities— Uploads an image for use on an activity — the picture shown on a class or session in a timetable — and returns the public URL you then store against the activity. - Uploads an image to public storage blob. Not member dependent or anything:
POST /api/images— Uploads a general-purpose image to public storage and returns the file name it was stored under. Use it for images that are not tied to a member — a site logo, a promotional banner, an organisation's branding.
IntegratorAdmin
- Create a global integrator Registers a new global integrator visible to all tenants:
POST /api/configuration/admin/integrators— Registers a global integrator — a partner record that every tenant can see and opt into. This endpoint only creates the catalogue entry; it does not issue an API key. A tenant gets a key by calling Activate a global integrator against theidreturned here. - Get a partner's audit log Returns a paginated, filterable audit trail of authentication activity for a partner:
GET /api/configuration/admin/partners/{id}/audit-log— Returns a page of authentication events recorded against a partner integration. Each entry records the API key used, the action attempted, the masked member email where one was involved, the caller's IP address, the HTTP status returned and the UTC timestamp. Newest first. - List all global integrators Get every global integrator registered across the platform:
GET /api/configuration/admin/integrators— Returns the whole catalogue of global integrators — the partner records Gladstone Support curates and every tenant can opt into. This is the administrative view of that catalogue: it is the same list a tenant sees, without any tenant-specific detail. - Soft-delete a global integrator Mark a global integrator inactive without removing its row:
DELETE /api/configuration/admin/integrators/{id}— Retires an integrator by setting itsisActiveflag to false. The integrator is not deleted, its audit trail is not touched, and its API keys keep theirActivestatus — but they stop working. - Update a global integrator Modify a global integrator's metadata, scopes, capabilities, or rate limits:
PUT /api/configuration/admin/integrators/{id}— Rewrites a global integrator's configuration: its display metadata, the web origin its keys may be used from, the scopes and capability flags stamped onto its tokens, its rate limits, and whether it is active at all.
IntegratorOperator
- Activate a global integrator for the current tenant Issue a fresh API key against a global integrator and…:
POST /api/configuration/operator/integrators/{id}/activate— Opts your tenant into a Gladstone-curated global integrator and issues an API key for it. The integrator itself is created by Gladstone Support; this call is how a tenant starts using one. - Create a private integrator for the current tenant Provision a tenant-private integration plus its first API…:
POST /api/configuration/operator/integrators/private— Creates a tenant specific private integrator and its first API key in one call. Unlike a global integrator, this integrator belongs to the calling tenant's environment: no other tenant can see it, and it never appears in the Gladstone-curated global catalogue. - Deactivate a global integrator for the current tenant Immediately revoke this tenant's API key for a global…:
POST /api/configuration/operator/integrators/{id}/deactivate— Revokes the one API key this tenant holds for a global integrator, ending that integration's access. - Delete a private integrator Revoke the integrator's active API key and mark the integrator inactive:
DELETE /api/configuration/operator/integrators/private/{id}— Retires a private integrator — an integration registered against one tenant only — by revoking its API key and marking it inactive. - List global integrators with tenant activation status Get every global integrator alongside its activation…:
GET /api/configuration/operator/integrators— Returns the catalogue of Gladstone-curated global integrators, each annotated with whether your own tenant has an active API key for it. Use it to render an integrations catalogue and to decide, per integrator, whether the next action is to activate it or to leave it alone. - List the current tenant's private integrators Get every tenant-private integrator owned by the current tenant:
GET /api/configuration/operator/integrators/private— Returns every private integrator belonging to your own tenant — the integrator records you create for your own systems, as opposed to the Gladstone-curated global catalogue. - Renew a private integrator's API key Atomically revoke the current key and issue a fresh one, returning the…:
POST /api/configuration/operator/integrators/private/{id}/renew-key— Rotates the API key of one of your tenant's private integrators: the current key is revoked and a new one issued in a single atomic operation, so the integrator is never left with two live keys or none. - Revoke a private integrator's API key Immediately invalidate the active API key for a private integrator…:
POST /api/configuration/operator/integrators/private/{id}/revoke-key— Immediately invalidates the API key currently issued to your tenant for a private integrator, without deleting the integrator or losing any of its configuration. The key is markedRevokedwith a revocation timestamp; it can never be un-revoked. - Update a private integrator Modify a tenant-private integrator's metadata, scopes, capabilities, or rate…:
PUT /api/configuration/operator/integrators/private/{id}— Rewrites the configuration of a private integrator belonging to your own tenant: its display metadata, the web origin its key may be used from, the scopes and capability flags stamped onto its tokens, its rate limits, and whether it is active.
LostCard
- Create lost card record:
POST /api/configuration/lost-cards— Adds an entry to the lost cards register for a member, recording that the member reported a card, smartband or keyfob lost. Gladstone generates the new entry's identifier for you; you cannot supply one. - Delete lost card record:
DELETE /api/configuration/lost-cards/{all}— Removes an entry from the lost cards register. Where the entry's identifier is a card number, that card is no longer blocked from reuse. This is a hard delete: the record is removed outright. - Get all lost cards:
GET /api/configuration/lost-cards— Lists every entry in the lost cards register: the cards members have reported lost, and when. - Get lost card by ID:
GET /api/configuration/lost-cards/{all}— A lost card record marks one physical member identifier — an access card, keyfob or smartband — as reported lost or stolen. This endpoint reads a single such record back by the identifier value itself. - Update lost card:
PUT /api/configuration/lost-cards/{all}— Rewrites an entry in the lost cards register — the record that a card was reported lost, and by whom. The entry is identified by itsid, which is the value in the path; only two fields are writable, the member the card belonged to and the date the loss was raised.
MarketingCampaigns
- Create a new marketing campaign:
POST /api/configuration/consent/marketing-campaigns— Creates a marketing campaign — a named purpose that members can grant or refuse consent for, covering promotional communications. Consent is recorded per member as a campaign and channel pair, so you also need at least one communication channel. - Delete a marketing campaign:
DELETE /api/configuration/consent/marketing-campaigns/{all}— Removes a marketing campaign — a named promotional purpose members opt in or out of — from consent configuration. The final segment of the path is the campaign identifier returned when the campaign was created. - Get all marketing campaigns:
GET /api/configuration/consent/marketing-campaigns— Lists the marketing campaigns configured for the tenant. A marketing campaign is a named promotional purpose — a newsletter, a class-offers mailing — that a member consents to or opts out of. - Update a marketing campaign:
PUT /api/configuration/consent/marketing-campaigns/{all}— Switches a marketing campaign on or off. A marketing campaign is a named consent purpose — a newsletter or a promotions mailing, for example — that a member opts into or out of; this call changes only whether the campaign is available, not what it is.
MedicalTypes
- Creates a medical condition type:
POST /api/configuration/medical-types— Adds a category of medical condition — asthma, epilepsy, a specific allergy — that can then be recorded against individual members. This is a definition only; it does not record anything against a member. - Deletes a medical condition type:
DELETE /api/configuration/medical-types/{all}— Deletes a medical condition type — an entry in the system-wide catalogue that member medical records are classified against. The type is removed permanently. - Returns a specific medical condition type based on the ID:
GET /api/configuration/medical-types/{all}— Reads a single medical condition type by its id — the label and active flag behind an id you already hold, typically one recorded against a member's medical record. - Returns all medical condition types:
GET /api/configuration/medical-types— Lists the medical condition types the operator has configured — the fixed vocabulary a member's medical record can draw on. - Updates a medical condition type:
PUT /api/configuration/medical-types/{all}— Updates a medical condition type — one of the categories staff choose from when recording a health condition against a member, such as "Asthma" or "Epilepsy".
MembershipType
- Get all membership types with optional filtering:
GET /api/configuration/membership-types— Lists the membership types configured for the tenant, in a cut-down form suitable for populating a "choose a membership" selector. - Get membership type by ID:
GET /api/configuration/membership-types/{all}— Returns one membership type — the template an operator sells, defining how long a membership runs, how it renews, which price level it is priced from, what documentation a joiner must supply and which tags describe it. - Get membership type restrictions:
GET /api/configuration/membership-types/{id}/restrictions— Returns the rules that govern how many people a group membership may cover, and how those people may be distributed across price levels. - Get membership types by membership type groups:
GET /api/configuration/membership-types/groups— Expands membership type groups into the membership types they contain. Each element of the array is one group, carrying its own id and description plus a nestedmembershipTypesarray of every membership type mapped to it, with translated descriptions. - Update image for membership type:
PUT /api/configuration/membership-types/{id}/image— Uploads an image and points a membership type at it, replacing whatever image that membership type was using. The image is what member-facing joining and membership screens show for the type. - Update membership type configuration:
PUT /api/configuration/membership-types/{all}— Sets the tags on a membership type, the earliest date a membership of that type may start, and its fixed end date — the calendar date a fixed-term membership type is configured to end on, instead of after its usual duration. - Update membership type restrictions:
PUT /api/configuration/membership-types/{id}/restrictions— Sets how many members a group membership of this type may contain in total, and how that total may be split across price levels — for example a family membership capped at five members, of whom at most two may be adults.
MembershipTypeGroup
- Create membership type group:
POST /api/configuration/membership-type-groups— Creates a membership type group — a named bucket that membership types are sorted into, so that configuration which applies to a whole family of memberships (access-control questions, add-on entitlements and cross-sell restrictions) can be attached to the group instead of to… - Delete membership type group:
DELETE /api/configuration/membership-type-groups/{id}— Permanently removes a membership type group — the named grouping that membership types are collected under. This is a hard delete: the group is removed outright and there is no deleted or inactive flag, so there is no deactivate alternative and nothing to reverse. - Get all membership type groups:
GET /api/configuration/membership-type-groups— Lists the membership type groups the operator has configured. - Get membership type group by ID:
GET /api/configuration/membership-type-groups/{id}— Retrieves a single membership type group by its id. A membership type group is a label an operator uses to bundle related membership types together — for example a groupMEMBERcovering theADULT,CHILDandSENIORmembership types — so that pricing, restrictions and… - Update membership type group:
PUT /api/configuration/membership-type-groups/{id}— Changes the label and comment held against a membership type group. A membership type group is a named collection of membership types, used to refer to several types at once — for example when picking an audience.
MultitenantMobileAppIdentifier
- Creates a new Multitenant Mobile App Identifier with an initial version.:
POST /api/configuration/multitenant-mobile-app-identifier— Registers a multi-tenant mobile app — one app binary in the App Store or Play Store that many Gladstone operators share — and creates its first version in the same call. - Retrieves all Multitenant Mobile App Identifiers.:
GET /api/configuration/multitenant-mobile-app-identifier— Lists the multi-tenant mobile apps the platform knows about — the shared Gladstone apps that several tenants use, each identified by its store bundle id and its OneSignal application id for push notifications — and, on request, the released versions of each. - Retrieves Multitenant Mobile App Identifiers for a specific environment.:
GET /api/configuration/multitenant-mobile-app-identifier/environment/{environmentId}— Lists the multi-tenant mobile app identifiers linked to one environment. - Updates an environment's Multitenant Mobile App Identifier versions.:
PUT /api/configuration/multitenant-mobile-app-identifier/environment/{environmentId}— Sets which multitenant mobile app identifier versions an environment is linked to.
Organisation
- Creates a new organization in the system:
POST /api/configuration/organisations— Registers an organisation — a named legal entity of one of two kinds,partneroroperator— and optionally maps it to the sites it covers. Organisations are reference data: they group sites under an owning body and carry that body's address, contact and VAT details. - Deletes an organization from the system:
DELETE /api/configuration/organisations/{all}— Deletes an organisation — a partner or operator entity that sites can be mapped to. The organisation is removed permanently; there is no inactive flag involved, and this is not the same as settingisActivetofalsewith Update organisation, which is the reversible option. - Retrieves a specific organization by its unique identifier:
GET /api/configuration/organisations/{all}— Returns one organisation — the legal or commercial entity above sites, carrying the name, registered address, VAT identifier and logo used on customer-facing documents — together with the sites mapped to it. - Retrieves all organizations configured in the system:
GET /api/configuration/organisations— Returns every organisation configured for your tenant. An organisation is the legal or commercial entity that sits above sites — the operator that runs the centres, or a partner working with them — and carries the name, registered address, VAT identifier and logo that appear on… - Updates an existing organization's configuration and settings:
PUT /api/configuration/organisations/{all}— Updates an organisation — a partner or operator entity that sites are grouped under for branding, contact details and commercial reporting.
PriceLevel
- Create price level:
POST /api/configuration/price-levels— Creates a price level. A price level is a named pricing category — "Adult", "Junior", "Corporate" and so on — that members and casual customers are assigned to, and that activity and membership prices are then quoted against. - Delete price level:
DELETE /api/configuration/price-levels/{priceLevelId}— Permanently removes a price level, together with its alternative site and activity descriptions and their translations. - Get all price levels:
GET /api/configuration/price-levels— Lists the price levels configured for the tenant. A price level is the operator-defined pricing band a person is charged under — adult, junior, concession, staff and so on. It carries no money. - Get price level by ID:
GET /api/configuration/price-levels/{priceLevelId}— Returns a single price level, together with the site- and activity-specific alternative descriptions configured against it. - Update price level:
PUT /api/configuration/price-levels/{priceLevelId}— Rewrites a price level — the banding a member or visitor is placed in, which determines which prices apply to them.
PromoCodes
- Create promo code:
POST /api/configuration/promotion-codes— Creates a promo code — the short string a customer types at checkout to pull in one or more discounts you have already configured. The promo code itself carries no money off; it is a validity window plus a list of discount ids, and the discounts decide what is actually reduced. - Get all promo codes:
GET /api/configuration/promotion-codes— Lists the promo codes defined for the tenant. A promo code is the string a customer types at checkout — for exampleSUMMER25— which the platform resolves to one or more discounts. - Get promo code by ID or code:
GET /api/configuration/promotion-codes/{promoCodeOrId}— Returns one promo code together with every discount mapped to it. A promo code is the string a customer types at checkout; the discounts attached to it are the actual price reductions, each one bound to a single membership type. - Update promo code:
PUT /api/configuration/promotion-codes/{id}— Rewrites an existing promo code: the dates it is valid between, how many times it may still be used, whether it is live, whether it applies itself automatically, and which discounts it grants.
Promotions
- Create promotion:
POST /api/configuration/promotions— Builds a complete promotional offer in one call. The endpoint performs three steps in sequence: it creates one discount for every membership type you list, creates one promo code for every code string you supply, and finally creates the promotion record that ties them together. - Delete promotion:
DELETE /api/configuration/promotions/{id}— Removes a promotion — a discount campaign, applied either to memberships or to bookings — along with the links that attach promo codes to it. - Get all promotions:
GET /api/configuration/promotions— Lists the promotions defined for the tenant, each with the promo codes attached to it. A promotion is the campaign — a name, a validity window and an on/off flag; the promo codes are the strings customers actually enter, and one promotion can carry several. - Get promotion by ID:
GET /api/configuration/promotions/{id}— Returns one promotion together with the promo codes attached to it and the discounts behind those codes. - Update promotion:
PUT /api/configuration/promotions/{id}— Updates an existing promotion — its name, the window it is valid for, whether it is active, and which promo codes are attached to it.
Refunds
- List all refund types:
GET /api/configuration/refund-reasons— Returns every refund reason code configured for your tenant. A refund reason is a short coded label — such as the reason a payment was returned — that staff and integrations attach to a refund so that refunds can be grouped and reported on consistently.
ResourceProduct
- Creates a new resource product with configuration and availability settings:
POST /api/configuration/resource-products— Creates a resource product — a bookable facility such as a court, studio or piece of equipment — together with the weekly opening pattern that says when it can be booked. - Delete resource product:
DELETE /api/configuration/resource-products/{all}— Deletes a resource product — a product flagged as a resource rather than a stock item, which activities are booked against — permanently. - Get resource product by ID:
GET /api/configuration/resource-products/{all}— Returns one resource product, together with the weekly opening times resolved from the calendar attached to it. - Retrieves all resource products with their configuration details:
GET /api/configuration/resource-products— Lists every resource product in the environment. A resource product is a bookable thing with a schedule attached — a court, a lane, a studio, a piece of equipment — as distinct from an ordinary retail product, which is only sold. This endpoint returns only resource products. - Update resource product:
PUT /api/configuration/resource-products/{all}— Updates a resource product — a bookable facility such as a court, lane or studio — and rebuilds its weekly opening schedule.
Restrictions
- Create booking membership restrictions:
POST /api/configuration/bookings/restrictions/memberships— Creates one booking membership restriction — a named rule that ties a set of activities to a set of membership types. - Create booking status restrictions:
POST /api/configuration/bookings/restrictions/status— Bars one or more member account statuses from booking. A member status is the code on a member's record that says where they stand with the operator — for example current, suspended or lapsed. - Delete booking membership restrictions:
DELETE /api/configuration/bookings/restrictions/memberships— Deletes one or more booking membership restrictions by id. This is a permanent delete, and it cascades: along with each restriction the endpoint removes every subscription-type entry and every activity entry attached to it, so the whole restriction — the rule and the memberships… - Delete booking status restrictions:
DELETE /api/configuration/bookings/restrictions/status— Deletes one or more booking status restriction entries by id. The entries are permanently deleted — there is no active flag on them, and so no deactivate alternative. - Get all booking membership restrictions:
GET /api/configuration/bookings/restrictions/memberships— Lists the booking membership restrictions configured for the tenant. A restriction is a named rule that ties a set of activities to a set of membership types, so that those activities can only be booked by members holding one of those memberships. - Get all booking status restrictions:
GET /api/configuration/bookings/restrictions/status— Lists the booking status restrictions configured for the tenant. Each entry names a member status (the operator-defined state a member record sits in — active, suspended, in arrears, and so on) that is barred from making bookings. - Get booking membership restrictions by ID:
GET /api/configuration/bookings/restrictions/memberships/{id}— Retrieves one booking membership restriction, including the activities it covers and the membership types it permits. - Get booking status restriction by ID:
GET /api/configuration/bookings/restrictions/status/{id}— Returns one booking status restriction. A booking status restriction is a single entry that names a member status — the operator-defined code describing the state of a person's membership, such as a live, frozen or suspended state — and marks members holding that status as… - Update booking membership restrictions:
PUT /api/configuration/bookings/restrictions/memberships/{id}— Rewrites one booking membership restriction. A restriction pairs a set of activities with a set of membership types, so that those activities can only be booked by members holding one of those membership types.
Search
- Retrieve a list of members:
GET /api/search/members-basic/{searchText}— Finds members by id, by name, or by the company they work for, and returns enough of each to populate a picker: name, site, contact details, price level and account status. - Retrieve a list of products:
GET /api/search/products/{searchText}— Finds products whose code or description contains the text you supply, and returns each with its classification and any translated descriptions. Use it to build a product picker or to resolve a product code a user has typed. - Search for activities:
GET /api/search/activities/{searchText}— Finds activities whose description contains the text you supply — a substring match for building an activity picker or a search box, not a way to look up an activity you already have the id of. - Searches for members by ID or name:
GET /api/search/members/{searchText}— Finds members from a single free-text term — the lookup behind a staff search box.
Site
- Create site:
POST /api/configuration/sites— Creates a site — a physical centre, branch or venue. A site is the fundamental scoping unit of the platform: activities, prices, memberships, bookings, bank accounts and system configuration all hang off a site id, so this is usually one of the first calls you make when setting… - Delete site:
DELETE /api/configuration/sites/{all}— Deletes a site outright. There is no soft delete and no undo: the site is removed, together with its amenity, facility and organisation mappings and its site-scoped system configuration. - Get all sites with optional filtering:
GET /api/configuration/sites— Lists the sites — the physical leisure centres, pools and venues — configured in one tenant. - Get site by ID:
GET /api/configuration/sites/{all}— Returns a single site — one physical venue or location in the operator's estate — by its site ID. - Get site defaults:
GET /api/configuration/sites/{siteId}/defaults— Returns the two site-level defaults an operator has nominated for a site: its default pricing time band and its default membership type group. - Set site defaults:
PATCH /api/configuration/sites/{siteId}/defaults— Sets the two site-level defaults the platform exposes: the site's default pricing time band and its default membership type group. Read the current values with Get site defaults. - Update site:
PUT /api/configuration/sites/{all}— Updates a site — a physical leisure centre — including its address, geographic position, contact details, public-facing links and the amenities, facilities and organisations attached to it.
SiteConfig
- Get next IDs for site:
GET /api/configuration/system/sites/{id}/next-ids— Returns the 23 sequence counters a site uses to allocate its own record numbers — the next booking ID it will issue, the next member ID, the next invoice number and so on. - Update next IDs for site:
PUT /api/configuration/system/sites/{id}/next-ids— Sets the identifier counters for one site. These counters are how the platform allocates the next member number, booking id, sale invoice id and so on: when a record is created, the counter is incremented and the record gets the value it held beforehand.
SiteGroup
- Create site group:
POST /api/configuration/site-groups— Creates a site group — a named set of sites that other configuration can be aimed at as a unit, so that a rule written once applies to every site in the group rather than to one site at a time. The group is created and its member sites are linked in the same call. - Delete site group:
DELETE /api/configuration/site-groups/{all}— Deletes a site group and the links between that group and its sites. The sites themselves are not deleted — they survive and are simply no longer members of any group. The site group is permanently deleted; there is no inactive flag and no undo. - Get site group by ID:
GET /api/configuration/site-groups/{all}— Returns one site group and the sites that belong to it. - Retrieves all site groups with their configuration details:
GET /api/configuration/site-groups— Lists every site group in the environment, each with the sites that belong to it. - Update site group:
PUT /api/configuration/site-groups/{all}— Updates a site group — a named collection of sites used to scope products, pricing and reporting across more than one centre.
SitesBankAccounts
- Create or update site bank account:
PUT /api/configuration/{siteId}/bank-accounts/{eftSystemId}— Records the bank account a site collects money into for one Electronic Funds Transfer (EFT) scheme — the account whose sort code, account number and originator references end up on the direct debit or credit files that scheme generates. - Delete site bank account:
DELETE /api/configuration/{siteId}/bank-accounts/{eftSystemId}— Deletes the bank account a site uses for one EFT (electronic funds transfer) system. A site holds at most one bank account per EFT system, so the site and EFT system together identify the record; deleting one leaves the site's accounts for other EFT systems untouched. - Get all site bank accounts:
GET /api/configuration/{siteId}/bank-accounts— Returns the bank accounts a single site collects money into. An operator configures at most one account per EFT system — Gladstone's term for a funds-transfer collection scheme such as BACS Direct Debit, SEPA or Australian Direct Debit. - Get site bank accounts by EFT system ID:
GET /api/configuration/{siteId}/bank-accounts/{eftSystemId}— Returns the one bank account a site holds for a given EFT system — the account that money collected under that scheme is paid into.
Status
- Creates a status:
POST /api/configuration/statuses— Defines a member status — the label a member's record carries to say where they stand, such as active, suspended or lapsed. A status is a definition only; assigning one to a member is done through the member endpoints, which take the status'sid. - Deletes a status:
DELETE /api/configuration/statuses/{all}— Deletes a member status — the code that classifies a member's standing, such as active or suspended. The status is removed permanently; there is no inactive flag and no undo. - Get a specific status by ID:
GET /api/configuration/statuses/{all}— Returns one member status — the configurable state a member record sits in, such as active, lapsed or frozen — together with the behaviour flags that state carries. The final segment of the path is the status identifier. - Get all member statuses:
GET /api/configuration/statuses— Lists the member statuses the operator has configured. Every member record carries exactly one status, and it is the operator's way of marking where a member stands — current, lapsed, suspended, a prospect who has not joined yet. - Updates a status:
PUT /api/configuration/statuses/{all}— Updates a member status — the label a member's record carries, such as "Active", "Frozen" or "Lapsed", together with the behaviour the platform applies to members holding it.
SystemConfig
- Retrieves a specific system configuration value by key and optional site ID:
GET /api/configuration/system/{configKey}— Reads one system configuration setting and returns its current value as a string. - Retrieves all available system configuration groups:
GET /api/configuration/system/groups— Lists the groups that system configuration settings are organised into — the categories a back office user would see as tabs or sections. It returns the groups themselves, not the settings inside them. - Retrieves all system-supported languages and localization settings:
GET /api/configuration/system/allowed-languages— Lists the languages this environment has been switched on for — the set an operator has opted into, not the set the platform is capable of. Use it to decide which language options to offer a member, and which cultures are worth requesting from the translation-bearing endpoints. - Retrieves system configuration settings grouped by configuration group IDs:
GET /api/configuration/system— Reads the environment's configuration settings for one or more configuration groups. - Updates a specific system configuration setting by its key:
PUT /api/configuration/system/{configKey}— Changes one platform setting, identified by its configuration key, together with any per-site overrides of it. - Updates multiple system configuration settings within a specific group:
PUT /api/configuration/system/group/{groupId}— Changes several platform settings at once, all of which must belong to one configuration group. The body is a JSON array, not an object.
SystemEventLogs
- Get system event logs:
GET /api/system/event-logs— Pages through the operator's system-level audit trail — the record of changes that are not attached to any one member.
TagGroups
- Get all tag groups with optional type filtering:
GET /api/configuration/tag-groups— Returns the tenant's tag groups, each with the tags inside it. - Get tag group by ID or key with optional filtering:
GET /api/configuration/tag-groups/{all}— Returns one tag group with the tags inside it, and optionally narrows those tags to the ones that are still reachable given a partial selection the user has already made. - Update tag group:
PUT /api/configuration/tag-groups/{all}— Updates a tag group and everything hanging off it — its tags, their properties, and the translations of both.
TaxCode
- Create tax code:
POST /api/configuration/tax-codes— Creates a tax code — a named tax rate that products and invoice lines are charged under. A tax code holds a description, a percentage rate and an optional reference; it does not know anything about jurisdictions or which products use it. - Delete tax code:
DELETE /api/configuration/tax-codes/{taxcodeId}— Deletes a tax code permanently. The tax code is removed outright — there is no inactive flag and no undo — and any translated descriptions held against that tax code are removed with it. - List all tax codes:
GET /api/configuration/tax-codes— Returns every tax code configured for your tenant, with its rate and its translated descriptions. - Retrieve a tax code's details:
GET /api/configuration/tax-codes/{taxcodeId}— Returns one tax code and its translated descriptions, looked up by the string id you already hold. - Update tax code:
PUT /api/configuration/tax-codes/{taxcodeId}— Updates a tax code — the named rate applied to a product's price when tax is calculated.
Time
- Get network date and time:
GET /api/configuration/system/time/current-time— Returns the current time, read from public NTP time servers and converted into whichever time zone you name.
Timeband
- Create pricing timeband:
POST /api/configuration/timebands— Creates a pricing timeband — a named period of the day, such as peak or off-peak, that prices and entry rules can later be attached to. Despite the name, this endpoint does not define any times. - Delete pricing timeband:
DELETE /api/configuration/timebands/{timebandId}— Removes a pricing timeband — a named period of the day, such as peak or off-peak, that prices and entry restrictions are attached to. - Get all pricing timebands:
GET /api/configuration/timebands— Lists every pricing timeband defined for the tenant. A timeband is a named label — for exampleSTAND/ "Standard" — that other configuration attaches to in order to vary price and entry rules by period. - Get pricing timeband by ID:
GET /api/configuration/timebands/{timebandId}— Returns a single pricing time band by its id. - Update pricing timeband:
PUT /api/configuration/timebands/{timebandId}— Replaces the configuration of one pricing timeband. A timeband is a named period that pricing and access control hang off: prices are held per timeband, and a timeband can additionally be flagged as one that denies swipe access at entry points.
Title
- Create a new title:
POST /api/configuration/titles— Creates a title (Mr, Mrs, Dr etc) for use on member profile and registration forms. Titles are tenant-wide reference data, not per-site. - Deletes a title:
DELETE /api/configuration/titles/{titleId}— Deletes a member title — the salutation code such asMRorDRthat member records are set to. The title is removed permanently; there is no inactive flag and no undo. - Get a specific title by ID:
GET /api/configuration/titles/{titleId}— Returns one title — the salutation shown before a member's name, such as Mr, Ms or Dr — and the gender option it is associated with. - Get all titles with optional filtering:
GET /api/configuration/titles— Returns the personal titles — Mr, Mrs, Dr and so on — that this operator accepts on a member record. Use it to populate the title dropdown on any registration or profile form you build, and to validate a title before you send it to a member-creating endpoint. - Updates a title:
PUT /api/configuration/titles/{titleId}— Updates a personal title — theMr,Ms,Drprefix offered when capturing a member's name — and the gender it implies.
Translation
- Export a file containing translations:
POST /api/translations/export— Exports a CSV file containing rows and columns with the requested translations. - Import a file containing translations:
POST /api/translations/import— Uploads a CSV file of translated text for one language and one translation type, and writes it to the platform. Despite the name, this is a write operation, not a staging or preview step — every accepted row is saved before the response is returned. - Modify translations in bulk:
PUT /api/translations— Sets the translations for one or more records in a single call. Each element of the array targets one record — identified by its translation type and itsId— and the array of translations you send replaces everything currently held for that record.
TranslationType
- Get all translation types:
GET /api/translation-types— Lists the translation types available to your tenant. A translation type names a kind of record that can carry localised text —Site,Activity,MembershipType,PriceLeveland so on — and every translated string in the platform is filed against exactly one of them. - Get translation type by ID:
GET /api/translation-types/{translationTypeId}— Returns one translation type — the definition of a category of thing that can be translated, such asSite,Product,ActivityGroup,PriceLevelorMembership.
UserFieldConfiguration
- Create user field configuration:
POST /api/configuration/user-fields— Defines a new custom field that can be stored against member records, alongside the standard profile fields. A user field is a definition only — creating one does not populate any member data; you set values per member through the member user field endpoints. - Get all user field configurations:
GET /api/configuration/user-fields— Lists the custom member fields ("user fields") an operator has defined, together with their type, default value, option list and localised labels. - Update user field configuration:
PUT /api/configuration/user-fields/{all}— Updates a user field definition. User fields are the custom, per-account attributes you can hold against a member beyond the standard profile — a membership number from a legacy system, a locker number, a consent date.
Knowledge base
Access Control
- Access Control – Entry Points and Entry Point Profiles
- Client Mugshot Installation, Configuration, and Diagnostic Tips
- Fix a Single Reader, Door or Gate That Isn't Working
- Gladstone360: Access Control Prerequisites
- GoMobile: Regenerative QR Access Control
- How to Update Turnstile and Gate Entry Points for Bookings in Plus2
- Plus2 Entry Points, Access Products and Tickets
- Re-installing the G360 Access Control Service
- Which Permission Enables the Switch User Functionality in CoachPortal
- Zonal Access Control Logic and Execution Order
Bookings & Classes
- Adding a Member to Multiple General Waiting Lists
- Block Booking Worked Scenarios in Go Operator
- Block Bookings (Plus2 Hosted Reservations) and Invoicing
- Block Bookings in Go Operator (Centre Management)
- Block Payment Online Joining Process for a Legend Customer
- Booking Clashes on Go Book
- Booking Restrictions in Go Book
- Booking Screen
- Building Bookable Resources in Plus2: Overview
- Cancelling a Block Booking in Go Operator
- Class Alert Lists and Push Notifications
- Closures, Exceptions and One-Off Sessions in Plus2
- Configuring Activities in Plus2
- Configuring Block Bookings in Plus2
- Configuring Booking Release Time for Classes and Activities in Go Book
- Configuring GBGroup for Plus2
- Configuring Plus2
- Creating a Block Booking in Go Operator
- Creating a Bookable Activity in Plus2 (Courts, PT Sessions)
- Creating a Class or Reservation in Plus2 (Classes, Booked Gym and Swim Sessions)
- Creating and Invoicing a Block Booking in Plus2 (Hosted Reservations)
- Creating Booking Exceptions in Centre Management
- Creating Booking Sheets in Plus2
- Creating Deep Links for Activity and Class Bookings in Gladstone Go
- Creating Resource Products in Plus2
- Date Signed Up To Class Filter
- Deep Links into Go Book and Go Join
- Downloading a Single Class Register
- Editing a Block Booking in Go Operator
- Enabling Booking Restriction Times for Online Joining
- Enabling Party Bookings in Go Book
- Enabling the Alert List for Classes in Gladstone Go
- EyeQ: Non-Attended Bookings Report
- Gladstone Go Book – Sites and Activity Display
- Go Book Booking and Cancellation Settings in Operator
- Grouping Sessions on Go Book with Plus2 Descriptions
- How Class Spaces Update on the Overview Page
- How does the ability grouping work in CoachPortal?
- How to Book a Customer into a Class on a Block Payment in a Continuous Course
- How to Book a Customer into a Class on Block Payments in a Fixed End Date Course (Termly Lessons)
- How to Book a Member into a Class from a Held Space
- How to Cancel or Amend a Member's Existing Booking
- How to Create a Class Name Definition
- How to Create and Apply Time Bands in Plus2
- How to Create Booking Membership Restrictions in GoBook
- How to Enable Replacement Sessions in My Courses
- How to Hold a Space
- How to Let Current Customers Top Up into Next Term While Showing Available Spaces
- How to Make Bookings in Plus2
- How to Manage Junior Memberships and Guardian Bookings
- How to Move Someone to the Next Level but Remain in the Same Class (Control Centre)
- How to Refresh a Class Register in Go Learn
- How to Resolve the "Unable to Purchase This Product for This Time Band or Price Level" Error in Plus2
- How to Send a Quick and Immediate Email to the Members Booked into a Single Session in GoLearn
- Is on a Course Filter
- Managing Bookings in Gladstone 360
- Mark Swimmers to Move Up a Level and Manage Assessments
- Move a Swimmer to Another Class or Course in GoLearn
- Plus2 Activities, Reservations, Booking Sheets and Closures
- Plus2 Calendars, Time Bands and Opening Hours
- Plus2 Resource Build QA and Go-Live Handover
- Setting Advance Booking Windows in Plus2
- Setting Up Block Bookings in Go Operator
- Setting Up Classes and Reservations in Plus2
- Setting Up Resource Products, Calendars and Booking Sheets in Plus2
- STA School Swimming Outcomes
- STA Videos in CoachPortal
- Swim England Class Specifications
- Swim England School Swimming Outcomes
- Types of Alert in CoachPortal
- Using the Gladstone360 Check-in Screen and Basket
- Viewing Classes
Configuration
- Accessing the Gladstone Management Console (GMC)
- Add GoLearn Staff Users and Fix Access and Permissions
- Add Welsh Translations Placeholders in your Trigger
- Adding and Managing Staff Users in Go Operator
- Assigning and Creating Security Roles in the GMC
- Audience Builder
- AWL Configs
- Block Booking Permissions in Go Operator
- Business Rules and Communication Jobs in the Gladstone Go Automation Portal
- Changing Prices for Products and Subscriptions in Plus2
- Configuration for DMCCA Requirements
- Configuring Access to Centre Management
- Configuring Gladstone360 Automated Emails in the GMC
- Configuring Gladstone360 Front of House Settings in the GMC
- Configuring Go Operator
- Configuring Multiple Sites in One Plus2 Database
- Configuring Plus2: Overview and Cross-Product Impact
- Configuring Screen Profiles for Gladstone360
- Creating a Workflow in Gladstone360
- Creating Tills and Buttons in Gladstone360
- Designing Gladstone 360 Add Contact Workflows
- Enabling 'Book for Others' Feature
- Enabling Capture+ Validation
- Enabling Parent/Guardian Movements in Homeportal
- Example Email Triggers
- Finding and Changing Settings in Go Operator
- Gladstone 360 – Permissions and GMC Configuration
- Gladstone 360 Access, Operator and System Role Permissions
- Gladstone 360 Check-in and Member Record Permissions
- Gladstone 360 CheckIn POS General Settings
- Gladstone 360 CheckIn POS Payment Manager, Prospect Email and Toastr Settings
- Gladstone 360 Contacts GMC Settings
- Gladstone 360 Contacts Permissions
- Gladstone 360 Home GMC Settings
- Gladstone 360 Permission Reference Overview
- Gladstone 360 POS Till Permissions
- Gladstone Go and 360 Email Templates
- Gladstone Go Operator Configuration Overview
- GladstoneGo: Alert List Notification Setup
- GladstoneGo: Setting Up Alternative Price Level Descriptions
- GladstoneGo: Site-wide Notifications
- GMC / Gladstone 360: Configuration and Cross-Product Impact
- Go Branding, Links and Contact Details in Operator
- Go Operator Configuration Settings: Overview
- Google Authenticator User Guide
- HomePortal Shows No Price or the Wrong Price
- How to Add a User
- How to Add and Manage Member Actions in Plus2
- How to Add Images to Contact Triggers
- How to Add or Amend Terms and Conditions Including Health Commitment Statement
- How to Configure Linked Member Invitation Emails in Go Operator
- How to Create User Fields in Plus2
- How to Delete a Document in ActivityPortal
- How to Target Payment Plan Options within Your Contact Triggers
- Joining Fee, Promo and Till Products in Plus2
- Make Courses, Levels and Classes Bookable on HomePortal
- Making a Price Level Visible in GoBook
- Managing Gladstone 360 User Accounts and Passwords
- Managing Users and User Groups in Plus2
- Member Facing Global and Shared Global Settings in the GMC
- Naming Conventions for Plus2 IDs and Descriptions
- Other Go Operator Settings: Single Site, SSO, Payments and Notifications
- Permissions for Replacement Sessions and Planned Absences
- Planning and Creating Price Levels in Plus2
- Plus2 Logins, Passwords, User Access and Licences
- Plus2 Products, Calendars and Booking Sheets
- Price Level Override (PLO)
- Recommended Gladstone 360 Roles and Permission Levels
- Setting Departments, Cost Centres and Tax in Plus2
- Setting Password Complexity in the GMC
- Setting up 2FA in GladstonePay Portal
- Setting Up a Password Recovery Method
- Setting Up Member Statuses in Plus2
- Setting Up Price Products and Changing Prices in Plus2
- Setting Up Price Products in Plus2
- Setting Up Titles, User Fields and Screen Profiles in Plus2
- SSO (SAML / Microsoft Entra) for Go Operator
- Switching Customer Logins to Email and Password Before Go Goes Live
- Targeting an Age Range within your Contact Triggers
- The Comms Portal Tab
- Using an Existing Logo in an Invoice Template in Go Operator
- Using the GMC Configuration Manager
- Welsh Translations in Gladstone Go
- Working Safely in Plus2 and Choosing the Current Site
General
- GoLearn 3.23 Release - Bug Fixes (September 2026)
- How to Find Plan Problems and Their Reasons in Go Learn
- New Client Onboarding
- Plus2: Mail Merge
- Updating Site Information, Facilities, and Amenities in GoJoin
- Updating Your Password Recovery Method
- Usage Memberships
- Windows App for Plus2 — Password Reset Guide
Getting Started
- DMCCA FAQ
- Feature Comparison: Signature vs Go
- Finding and Viewing Member Records in Gladstone 360
- Gladstone 360 Implementation Sequence and Go-Live Checks
- Gladstone Marketplace Partners and Integrations Overview
- Go Configuration Build Order Across Products
- Information to Collect Before Configuring Go Operator
- Logging In to Gladstone 360 and Using the Hardware Service
- Overview Screen
- Planning a New Site Build in Plus2
- RCP Reverification FAQ
- System Specification – Building a New Site
- Testing Gladstone Go Before Go-Live
Hardware & Peripherals
- Epson TM-T88IV Driver for Windows 11
- Gladstone360 PC Settings, Hardware Service and Card Terminals
- Honeywell 7190g Scanner Configuration for COM Port Use
- How to Add a Receipt Printer to Plus2 or Gladstone360
- How to Set a Default A4 Printer for Plus2 or Gladstone360
- Installing the Hardware Service (Video Guides)
- Kiosk Start-up Steps
- NFC Wallet Reader Driver and Installation Guide for Windows 11
- Setting Up and Naming Gladstone 360 Hardware Services
- What Does the Uncoupling of the Hardware Service from Gladstone360 Mean for You?
Hosting & Cloud
- Gladstone Cloud Data Security FAQ
- Gladstone Cloud Platform Security and Operational Resilience FAQ
- Gladstone Cloud Security, Compliance and Data Protection FAQ
- Gladstone Cloud: Password Reset
- How to Access Gladstone Drive
- Plus2: Unexpected Disconnects, Freezes or Crashes
- Remote Desktop for Plus2 – Password Reset Guide
- Saving Files to Gladstone Drive from Plus2
- Using NordVPN with Gladstone Cloud
- Windows App for Plus2 – Installation Guide
Integrations & API
- Using the Knowledge Base with AI Agents
- Audience Builder Best Practice Examples
- Audience Builder FAQ
- Audience Builder: Available Filters Reference
- Configuring Single Sign-On (SSO) for Gladstone Reporting (Sisense)
- GladstoneGo: Facebook (Meta) Pixel Integration
- GladstoneGo: Google Analytics Integration
- How to Configure an Endurance Zone Customer Integration
- How to Configure Your Endurance Zone Integration
- How to Set Up the EGYM Integration
- Member Marketing Preferences
- Overview of Bookings API Calls
- Overview of Configuration API Calls
- Overview of Member API Calls
- Overview of Payments API Calls
- Overview of Subscription API Calls
- Single API - 4Global Endpoints
- Single API - Cornerstone Integration
- Single API - Date and Time Format
- Single API - Well Known Configuration
- Technogym Integration
- Twin Labs Marketplace API Integration Overview
- Using Audience Builder
- How to Review EGYM Sync Errors
- How to Remove a Site or Membership Group from EGYM
Memberships & Subscriptions
- Adding a New Contact in Gladstone 360
- Building a Gladstone 360 Cancel Membership Workflow
- Cancelling a Membership in Gladstone 360
- Cancelling, Freezing and Refunding RCP Subscriptions
- Configuring a Subscription in Plus2
- Configuring Membership Discounts in the GMC
- Configuring Subscription Types (Sub Types) in the GMC
- Configuring User Fields for GoJoin and GoBook Sign-Up Forms
- Correcting a Wrong Direct Debit Membership Amount in Gladstone 360
- Creating a Membership Freeze in G360 and Plus2
- Creating Deep Links for Membership Purchase in GladstoneGo
- Display HomePortal in Welsh
- Documents in 360 (Contact Documents and Workflow Document Steps)
- Editing Contact Details and Online Accounts in Gladstone 360
- Freezing a Membership in Gladstone 360
- Gladstone 360 – Logging In, Member Records and Managing Memberships
- Gladstone 360: Freezes, Cancellations and Membership Changes
- Gladstone Go – Joining Online, Pay-as-You-Go and Eligibility Checks
- GladstoneGo: Membership Pre-sales
- Go Account Age, Guardian and Shared-Email Settings
- Go Join Joining Settings in Operator
- Group, Junior and Linked Memberships in Gladstone Go
- HomePortal Status Filter
- How to Edit the Earliest End Date of a Membership Subscription in Plus2
- How to Update Contract Terms and Cancellation Periods for Membership Subscription Types
- How to Use Linked Membership Features in Gladstone Go
- Linking Members and Setting a Primary Payee in Gladstone 360
- Managing Cards, ID Tokens and Member Status in Gladstone 360
- Managing Duplicate Records in Gladstone 360
- Moving Existing Members to a New Price Structure
- Notes, Reception Messages and Office Messages in Gladstone 360
- Promo Codes (Discounts on Memberships)
- Resync a Member from Plus2 or Fix a Member's Age in GoLearn
- Scheduled Actions and Age-Band Changes in Gladstone 360
- Selling a Membership in Gladstone 360
- Setting a Fixed End Date on a Membership Type in Go Operator
- Setting Up Gladstone 360 Membership Workflows
- Setting Up Go Join Tag Groups and Mapping Memberships
- Setting Up Subscription Type Groups for 360 Workflows
- The Customer's Go Account in Gladstone Go
- Using RCP Subscriptions for Courses
- Using the Gladstone 360 Memberships Tab
- Viewing the Videos in HomePortal
Mobile Apps
- Adding the My Wellness Module to MobilePro
- Can't See a Class on Mobile Pro
- EyeQ: Online Sales Report
- GoMobile Access QR Code Length
- GoMobile: Activity Tags
- GoMobile: Developer Accounts
- GoMobile: Device Support
- GoMobile: Image Display Guidelines
- GoMobile: Operator Configuration
- GoMobile: Release Notes
- GoMobile: Support FAQs
- MobilePro: App Design Checklist
- MobilePro: App Log In for End Users
- MobilePro: App Login Configuration Guide
- Single Sign-On (SSO): Providing Consumer Access for MobilePro
Payments & Terminals
- Accessing Direct Debit and EFT Reports in the Gladstone Management Console (GMC)
- Acquirer Authorisation Response Codes
- Android PED Terminology
- Android PEDs - Device Overview
- Android PEDs - Network Architecture
- Android T650P PED Connection and Firewall Requirements
- Authorisation Response Codes
- Block Booking Invoicing and Credit Notes in Go Operator
- Can I Receive Notification When a Payment Has Been Made?
- Common Gladstone360 POS Error Messages on Android PEDs
- Configuring Gladstone 360 to Use Dojo PEDs
- Configuring Point of Sale Peripheral Hardware in Gladstone360
- Configuring the RCP Service in the GMC
- Direct Debit Mandate Details and Bank Validation in Go Operator
- Direct Debit Member Charges and Mandate Queries in Plus2
- Direct Debit Set-Up in Plus2
- Gladstone 360 Check-in Screen and Point of Sale (Till)
- Gladstone Pay Portal Logins, Users and Getting Around
- Gladstone360 PED Integration Required Software Versions
- GladstonePay Settings in Go Operator
- GMC EFT Module 4.23 Features and Processing Improvements
- GoLearn - Direct Debit Instruction Confirmation Email Communication Job
- GoLearn - Resolving Online Payment Issues in HomePortal
- Honeywell Orbit MS7120 Scanner Configuration
- How to Add a Group Product Button to a Gladstone360 Till
- How to Configure Verifone Android PED in Gladstone360
- How to Configure Verifone Settings for G360
- How to Connect a T650P via a Full Feature Base
- How to Connect Your T650p to Wi-Fi
- How to Create a Customer Present Card Payment Method in Plus2
- How to Find the Serial Number on a Verifone T650p Android PED
- How to Generate X and Z Reports for Verifone Cloud Android PEDs in Gladstone360
- How to Perform an AUDDIS or EFT/Direct Debit Run in the GMC
- How to Process Customer Not Present Payments Using the Verifone Android PED
- How to Process Customer Present Payments Using the Verifone Android PED
- How to Process Refunds Using Verifone Android PED in G360
- How to Register a Refund through GoLearn
- How to Remove a Participant from a Class and Process Refunds in GoLearn
- How to Set a Verifone PED ID in Gladstone360 PC Settings
- How to Update a Member's Direct Debit Billing Information
- How to Verify a Transaction in the Verifone Central Portal
- How-To Videos for GoLearn: Leave Class & Refund, Topping Up, Booking, and Class Movement
- Installing and Connecting the Gladstone360 Hardware Service
- Invoicing Module and Pay by Link (GladstonePay)
- Monitoring RCP Reports and Failed Payments
- MT850 RFID Reader Driver and Installation Guide for Windows 11
- Paying Invoices and Sending Pay by Link from Gladstone360 POS
- Plus2: Till Drawer Configuration
- Printing a System Info Report on V200c Payment Terminal
- Processing Direct Debit Rejections (ARUDD) in Plus2
- RCP Compared with Direct Debit
- Recurring Card Payment Set-Up in Plus2
- Recurring Card Payments (RCP)
- Running a Direct Debit Collection (EFT Run) and AUDDIS File
- Running POS Readings and Cash-up in Gladstone360
- Selling RCP and Registering the Customer's Card in Go
- Setting Up and Configuring Verifone PTS5 PED (V200C and V240M)
- Setting Up Payment Methods in Plus2
- Taking Payments and Discounts at the Gladstone360 Till
- Taking Telephone Payments with Pay by Link
- Testing Connections to the Verifone API Using Postman
- Testing Recurring Card Payments
- The Basics Around GoLearn
- Using EFT Site Groups for Direct Debit Payments
- Using SMS with Communication Jobs
- Using the Invoicing Module
- Verifone Central – Creating and Scheduling Reports
- Verifone Central – Introduction and Overview
- Verifone Test Payment Cards
- Verifone V200c Identification and Connections
- Viewing Sales and Processing Refunds in Gladstone 360
Reporting & Data
- Archiving in Gladstone: How to Safely Remove Unwanted Data
- Configure Direct Debit Collections in GoLearn Reports
- Connecting to Snowflake Data Warehouse Using Power BI
- Dashboard
- Exporting Data from Gladstone Reporting
- Exporting Invoices from Plus2
- EyeQ: Sample Periods
- Finance Extracts: Export Locations and Access
- Generate Contact Trigger Sends Report
- Get Access to Gladstone Reporting and Sign In
- Getting Started with Gladstone Reporting
- Gladstone Reporting Frequently Asked Questions
- GoLearn Class and Session Report Definitions
- GoLearn Members, Movements, Waiting List and Badges Report Definitions
- GoLearn Overview Report Metric Definitions
- GoLearn Reports Overview
- GoLearn Transactions, Revenues and Direct Debit Report Definitions
- How to Navigate and Operate Gladstone Reporting
- How to Run Reports
- How to Set Up Dashboard Emails and Pulse Notifications in Sisense
- Individual Pupil Progress Report
- Navigating Gladstone Reporting
- Navigating to the Individual Pupil Progress Reports
- Reporting on Photo Consent in Reports
- Run GoLearn Class Reports and Clear Member Balances
- Setting Up Products for the Finance Extract (Departments and Promo Items)
- Understanding the Attendance Dashboard in Gladstone Reporting
- Understanding the Bookings Dashboard in Gladstone Reporting
- Understanding the Configuration Dashboard in Gladstone Reporting
- Understanding the Contacts Dashboard in Gladstone Reporting
- Understanding the Direct Debit Summary Dashboard in Gladstone Reporting
- Understanding the Payments Summary Dashboard in Gladstone Reporting
- Understanding the Prospects Dashboard in Gladstone Reporting
- Understanding the Sales Dashboard in Gladstone Reporting
- Understanding the Subscriptions Dashboard in Gladstone Reporting
- Understanding the Subscriptions Summary Dashboard in Gladstone Reporting
- Using Dashboard Subscriptions in Gladstone Reporting
- Using EyeQ with AVD
- Using Filter Bookmarks in Gladstone Reporting
- Using Filters in Gladstone Reporting
- Using Pulse Notifications in Gladstone Reporting
Single Sign-On
- How to Configure and Enable Operator SSO Using Microsoft Entra
- How to Configure Microsoft Entra for Gladstone Single Sign-On (SSO)
- How to Configure Microsoft Entra for Gladstone SSO
- Single Sign-On (SSO): The Consumer SSO Experience
- Update contacts added by SSO
Support & Policies
- Gladstone Plus2 & G360: Release Notes
- How to Submit a Support Ticket Using the Gladstone Customer Portal
Training
- Direct Debit Online Joining Process for a Customer Who Has a HomePortal Account
- Gladstone 360 Front of House Guide
- GoLearn - School Swimming Activity Portal
- GoLearn - School Swimming Configuration Guide
- GoLearn - School Swimming FAQ
- GoLearn – Automated Waiting Lists Guide
- GoLearn – Recovering Missing Classes
- GoLearn — Scheme Portal Overview
- GoLearn School Swimming Reports
- How to Add a Course in GoLearn Using a Cash Block
- How to Add a Course in GoLearn Using a Subscription
- How to Add a New Class in GoLearn
- How to Book a Customer into a Class on a Direct Debit
- How to Book a Member Using Remaining Credits in GoLearn
- How to Cancel a Class in GoLearn
- How to Create a Continuous Course
- How to Create a Fixed-end Date Course
- How to Move Participants Between Classes in GoLearn
- How to Use Portable Devices with GoLearn
- Introduction to GoLearn v3
- Learn2 Training Course Access
- Membership Not Syncing
- MobilePro eLearning Course
- Plus2: Block Bookings Configuration and Invoicing Webinar
- Plus2: Reports Generator (Webinar)
- Swim England - The Sales Cycle
- Topping Up GoLearn Classes at Reception
- Training for Business Process Manager (BPM)
- Training for Gladstone360 Access
- Training for Plus2
- Training: 360 Prospects
- Training: Connect version 8+
- Training: Gladstone360
- Unable to Cancel a Leave
Troubleshooting
- Fixing "Payment method Cash is not an invoicing account"
- Plus2 Changes Not Showing on Go
- Plus2 Start of Day, Record Locks and Error Messages
- Troubleshooting Block Bookings in Go Operator
- Troubleshooting GMC and Gladstone360 Cross-Product Issues
- Troubleshooting Plus2 Configuration Across 360 and Go
- Troubleshooting: Subscription Not Showing on Gladstone Go